개발자 바다의 파도

개발의 무인도에 갇혔다

알고리즘 공부/백준 알고리즘 89

3009 - 네 번째 점 (C++)

문제 - 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 - 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 - 직사각형의 네 번째 점의 좌표를 출력한다 풀이 -       처음 8~10번째 줄에 3개의 점 좌표를 입력한다. 이후 네 번째 점을 찾기 위해 12번째 줄에서 24번째 줄까지 간단한 규칙으로 찾습니다. 규칙은 x좌표가 1, 2번이 중복이면 3번과 4번 x 과표를 같게 하고, 1, 3번이 같으면 2번과 4번이 같게, 마지막으로 2,3번 x좌표가 같으면 1,4번 x좌표가 같게 합니다. y 좌표도 똑같은 원리로 4번째 y좌표를 찾습니다. 코드 복붙 주소 - https:..

1085 - 직사각형에서 탈출 (C++)

문제 - 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 - 첫째 줄에 x, y, w, h가 주어진다 제한 -      1      1      1      x, y, w, h는 정수 출력 - 첫째 줄에 문제의 정답을 출력한다 풀이 -        일단 정수 x, y, w, h를 입력 받고 wx, hy는 w - x와 h - y 값으로 설정한다. 이후 정수 min 값을 1001로 설정한 후 20번줄 for문에서 wx, hy, x, y값 중 가장 작은 수를 min으로 받게 하고 min을 출력하면 된다. 코드 복붙 주소 - https..

27323 - 직사각형 ( C++)

문제 - 정수 A, B가 주어진다. 세로 길이가 Acm, 가로 길이가 Bcm인 아래와 같은 직사각형의 넓이를 cm^2 단위로 구하시오. 입력 - 표준 입력에 다음과 같은 형태로 입력이 주어진다.      A     B 출력 - 세로 길이가 Acm, 가로 길이가 Bcm인 직사각형의 넓이를 cm^2 단위로 구하고, 단위 (cm^2)를 생략하여 출력한다.제한     1      1      A, B는 정수이다 풀이 -       매우 간단하게 우리가 잘 아는 직사각형 넓이 구하는 공식인 세로 * 가로를 하면 된다. A와 B 값을 받고 그 값들의 곱을 구하면 된다. 코드 복붙 주소 - https://github.com/ResToEons/BaekJoonAlgorithm/tree/main/10%20-%20%EA%B..

11653 - 소인수분해 (C++)

문제 - 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오 입력 - 첫째 줄에 정수 N (1  출력 - N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 풀이 -        이번 문제는 간단하게 입력 받은 숫자인 num을 초기값인 2인 i로부터 나눠서 나머지 값이 0인 경우 num을 i만큼 나누고 i를 출력하면 됩니다. 만일 나머지 값이 0이 아닌 경우 i를 for문에서 1씩 증가시키고 계속 나머지 값이 0일 때거나 i값이 num을 초과할 때까지 반복을 합니다. 코드 복붙 주소 - https://github.com/ResToEons/BaekJoonAlgorithm/tree/main/9%20-%20%EC%95%BD%EC%88%98%2C%2..

2581 - 소수 (C++)

문제 - 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 입력 - 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000 이하의 자연수이며, M은 N보다 작거나 같다. 출력 - M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 풀이 -        이번 문제는 무식하게 13번줄에서 2중 for문을 써서 소수를 구합니다. 소수를 구하면 sum을 더하고 min은 sum이 0일 때 저장합니다. 코드 복붙 주소 - https://github.com/ResToEons/Ba..

9506 - 약수들의 합 (C++)

문제 - 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. 입력 - 입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2  출력 - 테스트케이스 마다 한둘에 하나씩 출력해야 한다. n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다. 이때, 약수들은 오름차순으로 나열해야 한다. n이 완전수가 아니라면 n is NOT perfect.를 출력한다. 풀이 -        간단하게 16번줄에서 주어진 n값의 약수들의 합을 구합니다. 이후 25번줄에서 완전수인지 확인하고 완전수의 수식을 쓰면서 출력합니다. 만일 완전수가 아니면 40번줄으로 이동해서 출력하면 됩니다. 45~46번줄은 값을 초기화 합니..

2501 - 약수 구하기 (C++)

문제 - 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다.      두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 입력 - 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. 출력 - 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오. 풀이 -        이번 문제는 간단하게 약수 구하기 입니다. 이는 %을 써서 나머지 값이 0인 경우 cnt을 1씩 증가시켜서 약수의 개수를 셉니다. 이후 cnt 값이 K와 같으면 i를 출력하고..

5086 - 배수와 약수 (C++)

문제 - 4 x 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다.      3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다.     두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.     1. 첫 번째 숫자가 두 번째 숫자의 약수이다.     2. 첫 번째 숫자가 두 번째 숫자의 배수이다.     3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 - 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다. 출력 - 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약..

2869 - 달팽이는 올라가고 싶다 (C++)

문제 - 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 - 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1

1193 - 분수찾기 (C++)

문제 - 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 이와 같이 나열된 분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> ... 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, ... 분수라고 하자.     X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.  입력 - 첫째 줄에 X (1  출력 - 첫째 줄에 분수를 출력한다. 풀이 -        이번 문제는 표의 패턴에 따라 x, y좌표 값을 움직이면 됩니다. 처음에 보면 햇갈리지만 위와 같이 case문을 해석하면 쉽게 이해하고 풀 수 있습니다. 코드 복붙 주소 - https://github.com/ResToEons/BaekJoonAlgorithm/tree/main/8%20-%20%EC%9D%BC%EB%B..