본문 바로가기
Programming/알고리즘

[백준 / Python] 3036번 링

by castberry_ 2023. 9. 2.
반응형

문제

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

 

3036번: 링

출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.

www.acmicpc.net



해결 코드

def gcd(a, b):
    if a < b:
        a, b = b, a
    # a가 크다
    while True:
        if a % b == 0:
            return b
        else:
            a, b = b, a % b
        
n = int(input())
data = list(map(int, input().split()))
for i in range(1, n):
    tempgcd = gcd(data[0], data[i])
    print('%s/%s' % (data[0]//tempgcd, data[i]//tempgcd))

유클리드 호제법을 사용하여 첫 번째 링과 n 번째 링의 최대공약수를 구하고, 

최대공약수로 각 링을 나누면 된다. 

 

반응형

댓글