https://school.programmers.co.kr/learn/courses/30/lessons/120878
import math
def solution(a, b):
# a와 b의 최대공약수를 구하여 약분
b //= math.gcd(a, b)
# 분모 b의 소인수가 2와 5만 있는지 확인
while b % 2 == 0:
b //= 2
while b % 5 == 0:
b //= 5
# 최종적으로 b가 1이면 유한소수, 그렇지 않으면 무한소수
return 1 if b == 1 else 2
2
와 5
만 존재해야하므로 분자는 납두고 분모만 따로 빼서 풀이했다.math.gcd()
함수를 사용하여 최대공약수로 한 번에 약분했다.b
값이 1
이면 소인수가 2
와 5
만 존재하여 나누었을 때 1
이 된다는 뜻이니까 유한소수인 1
반환하고, 1
이 아니면 무한소수인 2
를 반환했다.import math
def solution(a, b):
b //= math.gcd(a, b)
# 분모에서 2와 5를 나눠 없애기
for p in [2, 5]:
while b % p == 0:
b //= p
# 남은 수가 1이면 유한소수
return 1 if b == 1 else 2
while
문을 두개로 나누기보단 [2, 5]
에서 하나씩 꺼내서 나누어주는 방식이다.피드백은 언제나 환영입니다 :)