반응형
설명
상근이는 창고에서 링 N개를 발견했다. 상근이는 각각의 링이 앞에 있는 링과 뒤에 있는 링과 접하도록 바닥에 내려놓았다.
상근이는 첫 번째 링을 돌리기 시작했고, 나머지 링도 같이 돌아간다는 사실을 발견했다. 나머지 링은 첫 번째 링 보다 빠르게 돌아가기도 했고, 느리게 돌아가기도 했다. 이렇게 링을 돌리다 보니 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 도는지 궁금해졌다.
링의 반지름이 주어진다. 이때, 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 돌아가는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 링의 개수 N이 주어진다. (3 ≤ N ≤ 100)
다음 줄에는 링의 반지름이 상근이가 바닥에 놓은 순서대로 주어진다. 반지름은 1과 1000를 포함하는 사이의 자연수이다.
출력
출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); // 링의 개수
int first = scan.nextInt(); // 첫 번째 링
for (int i = 0; i < n - 1; i++) {
int ring = scan.nextInt(); // 나머지 링
int[] frac = fraction(ring, first); // 분수 구하기
System.out.println(frac[1] + "/" + frac[0]);
}
}
// 분수 구하기
public static int[] fraction(int a, int b) {
int[] frac = new int[2];
frac[0] = a;
frac[1] = b;
int result = gcd(frac[0], frac[1]);
frac[0] = frac[0] / result;
frac[1] = frac[1] / result;
return frac;
}
// 최대 공약수
public static int gcd(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
}
반응형
'코딩테스트 > Baekjoon' 카테고리의 다른 글
[백준] 5893번: 17배 - Python (0) | 2021.06.09 |
---|---|
[백준] 5532번: 방학 숙제 - Java (0) | 2021.06.08 |
[백준] 1271번: 엄청난 부자2 - Java (0) | 2021.05.25 |
[백준] 11050번: 이항 계수 1 - Java (0) | 2021.05.03 |
[백준] 4344번: 평균은 넘겠지 - Java (0) | 2021.05.01 |
댓글