from math import gcd # gcd 함수는 최대 공약수를 구할 때 쓴다.
def solution(a, b):
# 최대 공약수 구하기
b //= gcd(a,b) # a와 b의 최대 공약수를 분모가 될 b에 몫으로 계산한 값을 반환
while b % 2 == 0: # 기약분수일 때 분모가 2의 배수인 경우
b //= 2 # 소수점을 날리기 위해서 몫 계산식으로 바꿀 거라고 정의함
while b % 5 == 0: # 기약분수일 때 분모가 5의 배수인 경우
b //= 5 # 소수점을 날리기 위해서 몫 계산식으로 바꿀 거라고 정의함
return 1 if b == 1 else 2 # 나머지에 다시 몫으로 계산한 값이 2와 5의 배수였으면 b는 1을 반환하게 됨.
# b값이 2와 5의 배수였다면 유한소수, 아니었으면 무한소수임.
🤔 문제 풀이
- 문제를 읽자마자 b값이 2와 5의 최대 공약수이거나 배수이면 유한소수겠구나 싶었어요
- from math import gcd
- b //= gcd(a,b)
- 최대 공약수는 math에서 gcd 함수를 불러와서 해결해주었어요
- while b % 2 == 0:
b //= 2
- 2의 배수를 찾아내서 그 값들은 소수점을 버리고 몫만 챙기겠다고 정의했어요
- 유한소수이기 때문에 몫만 챙겨가면 되거든요
- while b % 5 == 0:
b //= 5- 5의 배수일 경우에도 마찬가지로 해주었어요
- return 1 if b == 1 else 2
- 마무리로 삼항 연산자로 정리해 주었어요
- b == 1일 경우가 2와 5의 배수여서 나누어 떨어졌음을 의미해요
- 이 경우일 경우 유한소수이기 때문에 1로 출력되게 하고, 아닐 경우 2로 출력하게 하면, 문제 해결
'문제 풀기 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 밀기 (for문, 슬라이싱) (0) | 2025.01.10 |
---|---|
[프로그래머스] 저주의 숫자 3 (for, while) (0) | 2025.01.10 |
[프로그래머스] 등수 매기기 (index(), 이중 리스트) (0) | 2025.01.10 |
[프로그래머스] 치킨 쿠폰 (0) | 2025.01.09 |
[프로그래머스] 로그인 성공? (주석 달기) (0) | 2025.01.09 |