문제 : https://www.acmicpc.net/problem/3036
3036번: 링
출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.
www.acmicpc.net
어떤 문제인가?
아주 간단한 문제이다.
그냥 가장 큰 첫 번째 링의 반지름과 각 링들의 반지름들을 비교한 다음 기약 분수 형태로 출력하면 된다.
접근 방법
int n;
cin >> n;
링의 개수 n을 입력 받는다.
int arr[n];
링들의 반지름을 저장할 배열을 선언한다.
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
n번 만큼 링의 반지름을 입력받는다.
기약 분수로 나타내기 위해선 두 링 반지름의 최대공약수가 필요하다.
int gcd(int a, int b) {
int n;
while (b != 0) {
n = a % b;
a = b;
b = n;
}
return a;
}
두 수의 최대공약수를 구하는 함수이다.
for (int i = 1; i < n; i++) {
int div = gcd(arr[0], arr[i]);
cout << arr[0] / div << "/" << arr[i] / div << "\n";
}
첫 번째 링(arr [0])과 나머지 링들의 최대공약수를 구하고 기약 분수 형태로 출력해주면 끝!
무엇이 어려웠는가?
어렸을 때 이런 문제들을 풀어본 적이 있는 것 같다. 문제를 읽고 바로 어떻게 풀지 모르면 이상할 만큼 문제는 간단했다.
최대공약수를 구하는 것도 쉽게 구현할 수 있었다.
딱히 어려운 것이 없는 문제였다.
'백준 문제풀이(BOJ PS)' 카테고리의 다른 글
[백준(BOJ)] 18429번 근손실 C++ (0) | 2022.08.06 |
---|---|
[백준(BOJ)] 9663번 N-Queen C++ (0) | 2022.08.06 |
[백준(BOJ)]골드바흐의 추측(에라토스테네스의 체) C++ (0) | 2022.08.01 |
[백준(BOJ)] 4948번 베르트랑 공준(에라토스테네스의 체) C++ (0) | 2022.08.01 |
[백준(BOJ)] 5052번 전화번호 목록 C++ (0) | 2022.07.27 |