백준 - 단계별로 풀어보기

1. 문제 상세 https://www.acmicpc.net/problem/3009 2. 문제 접근 직사각형의 네 점의 좌표에서 규칙을 찾아 문제를 해결하자. 직사각형의 네 점의 좌표들을 살펴보면 총 8개의 x, y 좌표중 같은 x, y 좌표가 네 쌍이 있다는 것을 알 수 있다. 이를 활용하여 세 점의 좌표를 입력받았다면 같은 x, y 좌표가 세 쌍이 나올 것이고 남는 x, y 좌표가 마지막 점의 좌표가 된다. 먼저 입력받은 첫 번째 점의 x 좌표와 두 번째 점의 x 좌표를 비교해 같다면 세 번째 점의 x 좌표를 출력하자. 다르다면 첫 번째 점의 x 좌표와 세 번째 점의 x 좌표를 비교하여 같다면 두 번째 점의 x 좌표를 출력하자. 모두 아닌 경우 첫 번째 점의 x 좌표를 출력한다. y 좌표도 동일하게 비..
1. 문제 상세 https://www.acmicpc.net/problem/1085 2. 문제 접근 좌표 x, y 와 왼쪽 아래 점 0, 0 부터 오른쪽 위 점 w, h 크기의 직사각형이 주어진다. 가장 가까운 거리를 구하기 위해 최솟값을 저장 할 변수를 만들자. 변수에 입력받은 x, y 중 작은 값을 넣는다. 직사각형의 한 점이 0, 0 에서 시작하기 때문에 각 좌표 x, y 중 더 작은 값이 경계선까지의 최소값이 된다. 그리고 입력받은 w 에서 x 를 빼고, h 에서 y 를 빼준다, 뺸 값을 최소값과 비교하여 작을 경우 최소값에 저장하자. 3. 문제 풀이 #include using namespace std; int main() { int a, b, w, h, min; cin >> a >> b >> w ..
1. 문제 상세 https://www.acmicpc.net/problem/11653 2. 문제 접근 입력받은 수를 소인수분해 하는 과정을 출력하자. 입력받은 수 N 을 1이 될 때 까지 2부터 N 까지의 수로 나누며 나눈 수를 출력한다. 주의할 점은 N 을 나누었을 때 나머지가 0이 아닐 경우에만 다음 수로 나눠야한다는 것이다. 예를 들어서 N 이 12인 경우를 보자. 12를 2로 나눌 경우 나머지가 0이기 때문에 2로 나눠서 N 은 6이 되고 2를 출력한다. 6을 2로 나누면 나머지가 0이기 때문에 6을 2로 나눠서 N 은 3이 되고 2를 출력한다. 3은 2로 나누었을 때 나머지가 0이 아니기 때문에 2 다음인 3으로 나눠보자. 3을 3으로 나누면 나머지가 0이기 때문에 3으로 나눠 N 은 1이 되고 ..
1. 문제 상세 https://www.acmicpc.net/problem/2581 2. 문제 접근 주어진 수 M 부터 N 까지의 자연수 중 소수를 찾자. 범위 내의 소수를 찾기 위해 에라토스테네스의 체 알고리즘을 사용하여 문제를 해결해보자. ■ 에라토스테네스의 체 에라토스테네스의 체 알고리즘은 주어진 범위 내에서 소수들을 찾는데 효율적인 알고리즘이다. 2부터 주어진 수 까지의 수들 중 가장 작은 수의 배수부터 지워나간다. 가장 작은 수의 제곱이 주어진 수보다 작을 때 이 과정을 반복한다. 위 사진에서는 2부터 120까지의 수가 있다. 가장 먼저 2부터 120까지의 2의 배수가 모두 지워지고, 그 다음 3의 배수가 모두 지워진다. 그 다음 지워지지 않은 수 중 가장 작은 수인 5의 배수, 그 다음 7의 배..
1. 문제 상세 https://www.acmicpc.net/problem/1978 2. 문제 접근 소수는 자기 자신과 1만을 약수로 가지는 수이다. 입력받은 N 개의 숫자가 소수인지 확인하여 소수인 숫자의 개수를 알아내자. 일단 이를 위해 각 숫자가 소수인지를 확인해야 한다. 입력받은 숫자가 X 라고 하자, 이 X 가 소수인지 확인하기 위한 방법을 크게 3가지로 꼽아봤다. 1. X를 2부터 X - 1의 수까지 나누어 보며 나머지가 0이 아닌지 확인하는 방법이 있다. 하지만 이 방법은 2부터 X - 1 까지의 수를 전부 나누어 봐야 하기 때문에 연산 횟수가 많다. 2. X를 2 부터 X / 2 의 수까지 나누어 보며 나머지가 0이 아닌지 확인하는 방법이다. X를 나눌 때, X를 제외하고 X의 절반이 넘는 ..
1. 문제 상세 https://www.acmicpc.net/problem/9506 2. 문제 접근 완전수를 구하기 위해 입력받은 자연수 N 을 1부터 N / 2 의 수로 나누어보며 나눈 나머지가 0이 되는 경우의 수를 배열에 추가하고, N 과 비교할 완전수 변수에 더해준다. 모든 약수들을 확인하고 나면 입력받은 N 과 약수들을 모두 더해둔 값이 저장된 완전수 변수의 값이 같은지 확인한다. 값이 같다면 완전수이므로 배열에 추가해둔 약수들로 조건대로 출력하고, 아닌 경우도 해당 조건대로 출력한다. 3. 문제 풀이 #include using namespace std; int main() { int n, factor[50000]; while(true) { int perfect = 0, index = 0; cin..
Dry_p
'백준 - 단계별로 풀어보기' 카테고리의 글 목록 (5 Page)