문제설명
숫자들을 입력받고 첫번째 입력받은 숫자를 두번째 이후로 입력받은 숫자들로 나눈 것을 기약분수 형태로 출력하는 문제입니다.
작동 순서
1. 숫자들을 입력받습니다.
2. 첫번째 숫자와 i번째 숫자의 최대공약수를 구합니다.
3. 첫번째 숫자를 최대공약수로 나눈 것을 분자, i번째 숫자를 최대공약수로 나눈 것을 분모로 연결해서 출력합니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 백준_3036번_링 {
static int gcd(int a, int b) {
int temp;
while(true) {
temp=a%b;
if (temp==0) return b;
else {
return gcd(b, temp);
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb=new StringBuilder();
int N=Integer.parseInt(br.readLine());
int[] num=new int[N];
int temp;
String[] input=br.readLine().split(" ");
for(int i=0;i<N;i++) num[i]=Integer.parseInt(input[i]);
for(int i=1;i<N;i++) {
temp=gcd(num[0],num[i]);
sb.append(num[0]/temp+"/"+num[i]/temp+"\n");
}
System.out.print(sb);
}
}
후기
문제에서는 바퀴가 회전하는 횟수를 구하라는 식으로 적혀있어서 혼동이 있었지만 구하는 방식을 알고보니 굉장히 간단하게 풀 수 있는 문제였습니다.