알고리즘/Python
[Python | 프로그래머스] 유한소수 판별하기
i'mMolly
2023. 4. 24. 22:57
https://school.programmers.co.kr/learn/courses/30/lessons/120878
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다.
기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다.
두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.
제출 답안
def solution(a, b):
answer = 0
bunmo = makeSmall(a,b)
return suso(bunmo)
def makeSmall(a,b):
c = min(a,b)
for i in range(1,c+1):
if a%i==0 and b%i==0:
c = i
return b//c
def suso(bunmo):
while bunmo%2==0:
bunmo = bunmo//2
while bunmo%5==0:
bunmo = bunmo//5
if bunmo==1:
return 1
else:
return 2
개선 답안
최대공약수 함수: gcd()
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
참고 자료
https://school.programmers.co.kr/learn/courses/30/lessons/120878/solution_groups?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr