[프로그래머스][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
'프로그래머스 > LV.0' 카테고리의 다른 글
[프로그래머스][LV.0] 저주의 숫자 3 | python3 (0) | 2025.02.10 |
---|---|
[프로그래머스][LV.0] 최빈값 구하기 | python3 (0) | 2025.02.10 |
[프로그래머스][LV.0] 문자열 여러 번 뒤집기 | python3 (0) | 2025.02.03 |
[프로그래머스][LV.0] 주사위 게임 3 | python3 (0) | 2025.02.03 |
[프로그래머스][LV.0] 배열 만들기 2 | python3 (0) | 2025.02.03 |