[프로그래머스] 파이썬 유한소수 판별하기

ybk·2023년 10월 3일
0

프로그래머스

목록 보기
152/236

Lv.0 유한소수 판별하기

문제 설명

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

  • 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다.
    두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.

입출력

코드 풀이

from math import gcd
def solution(a, b):
    b //= gcd(a,b) 
    while b%2==0:
        b//=2  
    while b%5==0:
        b//=5
    return 1 if b==1 else 2
  1. gcd 함수는 최대 공약수를 계산하는 함수입니다.
  2. b //= gcd(a, b): ab의 최대 공약수를 구하고, b를 그 최대 공약수로 나눈다.
  3. while b % 2 == 0:while b % 5 == 0:: b가 2 또는 5로 나누어 떨어지는 한, 계속해서 2 또는 5로 나눈다. 이렇게 함으로써 b를 2와 5를 제외한 다른 소수로 나눌 수 없게 된다.
  4. return 1 if b == 1 else 2: 최종적으로 b가 1이 되었다면, 이는 2와 5를 제외한 다른 소수로 나눌 수 없는 경우를 나타낸다.
  • 분수 7/20은 기약분수 -> 분모 20의 소인수가 2, 5 이기 때문에 유한소수이다.

출처: 프로그래머스 코딩테스트 연습

profile
개발자 준비생~

0개의 댓글