728x90
[python] 백준 3036 : 링
실버 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)
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 |