728x90
[python] 백준 3036 : 링
3036번: 링
출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다.
www.acmicpc.net
실버 3
수학, 정수론, 유클리드 호제법
접근
기약분수는 분모와 분자를 더이상 약분할 수 없는 분수를 뜻한다.
따라서 분모와 분자의 최대공약수로 나누는 방법으로 구할 수 있다.
12와 3의 경우 최대공약수가 3이므로 각각을 3으로 나누면
4와 1이 된다. 이를 분자/분모의 형태로 출력하도록 만들어야 한다.
코드 (최대공약수를 반환하는 라이브러리 사용)
import sys; input = sys.stdin.readline
from math import gcd
N = int(input())
lst = list(map(int, input().split()))
for i in range(1, N):
num_gcd = gcd(lst[0], lst[i])
print(f'{lst[0]//num_gcd}/{lst[i]//num_gcd}')
코드 (유클리드 호제법으로 최대공약수를 구함)
import sys; input = sys.stdin.readline
def gcd(x, y):
while y:
x, y = y, x%y
return x
N = int(input())
lst = list(map(int, input().split()))
for i in range(1, N):
num_gcd = gcd(lst[0], lst[i])
print(f'{lst[0]//num_gcd}/{lst[i]//num_gcd}')
[파이썬] 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기 (tistory.com)
[파이썬] 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기
[파이썬] 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기 유클리드 호제법 A>B일때, A%B를 R이라고 할때, A와 B의 최대공약수와 B와 R의 최대공약수가 같다는 원리이다. A에 B를 대입
afterdawncoding.tistory.com
728x90
'알고리즘 문제 풀이' 카테고리의 다른 글
[python] 백준 1743 : 음식물 피하기(BFS) (0) | 2022.04.28 |
---|---|
[python] 백준 18352 : 특정 거리의 도시 찾기(BFS) (0) | 2022.04.27 |
[파이썬] 백준 2667 : 단지 번호 붙이기(BFS) (0) | 2022.04.16 |
[파이썬] 백준 11725 : 트리의 부모 찾기 (0) | 2022.04.12 |
[파이썬] 백준 2644 : 촌수계산 (0) | 2022.04.10 |