Coding Problem/백준

[백준] 3036 - 링

마탁이 2021. 5. 31. 19:59

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

 

3036번: 링

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

www.acmicpc.net

  • 비례식을 활용하면 풀 수 있는 문제이다.
  • 최대공약수를 구하기 위해 유클리드 호제법 또한 사용해야한다. (기약분수로 결과를 출력하기 위해)

 

더보기
def gcd(a, b):
    maxVal = a if a >= b else b
    minVal = a if a < b else b
    while 0 != minVal:
        temp = maxVal % minVal
        maxVal = minVal
        minVal = temp
    return maxVal

N = int(input())
ringList = list(map(int, str(input()).split())) # 링의 반지름

answerList = []
aRadius = ringList[0]
for idx, ring in enumerate(ringList):
    if(0 == idx): continue
    bRadius = ring

    gcdVal = gcd(aRadius, bRadius)
    answer = str(f'{int(aRadius/gcdVal)}/{int(bRadius/gcdVal)}')
    answerList.append(answer)

# print
for ans in answerList: print(ans)

'Coding Problem > 백준' 카테고리의 다른 글

[백준] 9375 - 패션왕 신해빈  (0) 2021.05.31
[백준] 5086 - 배수와 약수  (0) 2021.05.31
[백준] 1676 - 팩토리얼 0의 개수  (0) 2021.05.31
[백준] 1037 - 약수  (0) 2021.05.31
[백준] 1010 - 다리놓기  (0) 2021.05.31