본문 바로가기

Algorithm/Implementation

(Python3) - 프로그래머스(코딩테스트 입문) : 유한소수 판별하기

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/120878#

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

최대공약수를 구해본 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. gcd_val선언 후 유클리드 호제법으로 최대공약수를 구한 값을 저장합니다.

 

2. 기약분수로 만들기 위해 a, b를 gcd_val로 정수 나누기 해 갱신합니다.

📔 풀이과정

1. 5로 나눠지는 동안 b를 5로 나눠줍니다.

 

2. 2로 나눠지는 동안 b를 2로 나눠줍니다.

📔 정답 출력 | 반환

b가 1이하인 경우 2,5의 소인수로만 구성된 수 이거나 정수이므로 1을, 아니라면 2를 반환합니다.


📕 Code

📔 Python3

def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a%b)

def solution(a, b):
    gcd_val = gcd(a,b)
    a = a // gcd_val
    b = b // gcd_val
    while b % 5 == 0:
        b /= 5
    while b % 2 == 0:
        b /= 2
    if b <= 1:
        return 1
    return 2

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.