본문 바로가기
BaekJoon

[백준] 3036번 : 링(JAVA)

by GrayChoi 2019. 11. 28.
반응형

정답 비율 82.23% 문제!

https://www.acmicpc.net/problem/3036

 

3036번: 링

문제 상근이는 창고에서 링 N개를 발견했다. 상근이는 각각의 링이 앞에 있는 링과 뒤에 있는 링과 접하도록 바닥에 내려놓았다.  상근이는 첫 번째 링을 돌리기 시작했고, 나머지 링도 같이 돌아간다는 사실을 발견했다. 나머지 링은 첫 번째 링 보다 빠르게 돌아가기도 했고, 느리게 돌아가기도 했다. 이렇게 링을 돌리다 보니 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 도는지 궁금해졌다. 링의 반지름이 주어진다. 이때, 첫 번째 링을 한 바퀴 돌리면,

www.acmicpc.net

위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계

 

수학3의 카테고리에 포함되어 있는 문제이다.

 

N개의 링이 주어지고 첫 번째 링이 한 바퀴를 돌았을 때,

 

나머지 링이 몇 바퀴를 도는지 구하는 문제이다.

 

첫 번째 링과 구하는 링의 최대공약수를 이용하여 풀 수 있는 문제이다.

 

최대공약수를 구한 후, 구한 최대공약수로 각각의 링을 나누어 주면 된다.

 

import java.util.Scanner;

public class Question_3036 {
    public static void gcd(int A, int B) {
        int temp;
        int First_Ring = A;
        int Next_Ring = B;
        while(B > 0) {
            temp = B;
            B = A % B;
            A = temp;
        }
        System.out.println(First_Ring / A + "/" + Next_Ring / A);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int Number = sc.nextInt();
        int[] Ring = new int[Number];
        for(int i = 0; i < Number; i++) {
            Ring[i] = sc.nextInt();
        }

        for(int i = 1; i < Number; i++) {
            gcd(Ring[0], Ring[i]);
        }
    }
}

 

반응형

댓글