SW/알고리즘

파이썬 : 프로그래머스 : 최대공약수와 최소공배수 : 풀이

얇은생각 2019. 9. 28. 07:30
반응형

코드

def fun1(n, m):
    ret_val = 0
    
    for i in range(1, min(n,m) + 1):
        if n % i == 0 and m % i == 0:
            ret_val = i

    return ret_val

def fun2(n, m):
    for i in range(max(n,m), n*m + 1):
        if i % n == 0 and i % m == 0:
            return i

def solution(n, m):
    return [fun1(n,m), fun2(n,m)]

 

 

 

실행 결과

정확성 테스트

테스트 1 통과 (0.05ms, 10.6MB)
테스트 2 통과 (0.10ms, 10.7MB)
테스트 3 통과 (0.05ms, 10.7MB)
테스트 4 통과 (0.06ms, 10.6MB)
테스트 5 통과 (0.04ms, 10.7MB)
테스트 6 통과 (0.04ms, 10.8MB)
테스트 7 통과 (0.06ms, 10.7MB)
테스트 8 통과 (0.06ms, 10.8MB)
테스트 9 통과 (0.04ms, 10.7MB)
테스트 10 통과 (0.05ms, 10.7MB)
테스트 11 통과 (10.39ms, 10.8MB)
테스트 12 통과 (38.47ms, 10.7MB)
테스트 13 통과 (19.75ms, 10.7MB)
테스트 14 통과 (40.32ms, 10.7MB)
테스트 15 통과 (0.37ms, 10.6MB)
테스트 16 통과 (33.01ms, 10.7MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0

 

 

 

총평

우선 최소공배수, 최대공약수를 구하는 함수를 구현하였습니다. 각 for 문의 범위는 위 함수를 참조해주세요. for 문의 범위는 최소공배수, 최대공약수를 구할 때, 달라집니다. 최소공배수의 경우 해당 값이 구해지면 바로 반환을 하는 방식으로 구현하였습니다. 최대공약수는 가장 최근의 값이 크기 때문에 for 문이 끝나면 그 값을 구해줍니다. 지금 문제를 풀이하면 든 생각이지만, 최대 값을 기준으로 -1 씩 내려가면서 그 값을 구한다면 좀 더 성능 좋은 함수를 구현할 것 같습니다. 다음에 푸시는 분들은 해당 방식을 활용하시는 것도 좋을 것 같습니다.

반응형