인천의 자유인

[Python] 유한소수 판별하기 - 프로그래머스 본문

Python/Python코딩테스트

[Python] 유한소수 판별하기 - 프로그래머스

Youngook 2024. 5. 6. 09:12
728x90
반응형

 

 

 

나의 문제풀이

def solution(a, b):
    #1
    lst = []
    for x in range(1,a+1):
        if a%x == 0:
            lst.append(x)
    #2
    for i in lst:
        if b%i == 0 and a%i == 0:
            a = a//i
            b = b//i
    #3        
    for x in range(2,b+1):
        if x%2 == 0 or x%5 == 0:
            continue
        if b%x == 0:
            return 2
    return 1

 

#1번은 먼저 a의 약수를 구하기 위한 식입니다. a의 약수를 차례대로 lst라는 리스트에 저장을 합니다.

 

#2번은 기약분수를 만들기 위해서 나누는 것인데 a의 약수로 b까지 나눌 수 있을때까지 출력하는 것입니다. 그래서 a도 b도 크기를 최소한으로 만드는 것이죠.

 

#3번은 유한소수인지 무한소수인지 판별하는 구간입니다. 만약 이 값이 2나 5로 나눠지면 continue를 해서 넘어가고 그것이 아니라 다른 값으로도 나눠진다면 유한소수가 아니기 때문에 return 2를 합니다. 예를 들어 6이라는 정수가 있다고 했을때 2로 나눠지긴하지만 3으로도 나눠지기 때문에 유한소수가 아닌 것입니다. 만약 이러한 조건을 통과했는데도 2나 5외에 다른 수가 나오지 않는다면 소인수가 2와 5밖에 없다는 것이 되기 때문에 유한소수가 되며, 결과적으로 return 1를 하면 문제가 해결됩니다.

728x90
반응형