[프로그래머스][LV.0] 유한소수 판별하기 | python3

2025. 2. 10. 13:56프로그래머스/LV.0

 

문제 링크: 유한소수 판별하기

 

문제 설명

문제 설명

소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다.

- 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다.

두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.

제한사항
- a, b는 정수
- 0 < a ≤ 1,000
- 0 < b ≤ 1,000

 


문제 풀이

def solution(a, b):
    answer = 0
    c= min(a,b)
    for i in range(c,1,-1):
        if a%i==0 and b%i==0:
            a//=i
            b//=i
            
    while b%2==0:
        b//=2

    if b==1:
        return 1
        
     for i in range(2,b+1):
         if b%i==0:
             if i != 5:
                 return 2
    return 1​

 

이게 왜 안되나 생각해 봤는데 ..... 잘 모르겠다..그래서 질문하기에 물어봄.. 답오면 정리해야지

 

내코드

from math import gcd

def solution(a, b):

    b=b/gcd(a,b)
    for i in [2,5]:
        while not b%i:
            b //= i
        
    return 1 if b==1 else 2
#다시 풀어본 풀이
def solution(a, b):
    answer = 0
    c= min(a,b)
    for i in range(c,1,-1):
        if a%i==0 and b%i==0:
            a//=i
            b//=i
            
    while b%2==0:
        b//=2
    while b%5==0:
        b//=5
    if b==1:
        return 1
    else:
        return 2

 


더보기

다른사람풀이

def solution(a, b):

    return 1 if a/b * 1000 % 1 == 0 else 2