[프로그래머스 / lv.1] 최대공약수와 최소공배수
in Problem Solving on Programers
날짜: 2021년 5월 20일
소요 시간: 27분 9초
카테고리: 수학 문제
태그: 레벨1
, 파이썬
입출력 예시
n | m | return |
---|---|---|
3 | 12 | [3, 12] |
2 | 5 | [1, 10] |
내가 적은 코드
def solution(n, m):
a = n
b = m
while b:
a, b = b, a%b
min = a
max = (n/min)*(m/min)*min
return [min, max]
풀이 과정
유클리드 호제법을 활용하여 최소공배수를 구했고, 두개의 인자와 최소공배수 사이의 관계를 활용하여 최대공약수를 구했다.
베스트 코드
def gcd(a, b):
return b if a % b == 0 else gcd(b, a % b)
def lcm(a, b):
return int(a * b / gcd(a, b))
def gcdlcm(a, b):
answer = [gcd(a,b), lcm(a,b)]
return answer
반성
- 최대공약수와 최소공배수 계산을 모두 해야해서
n
과m
을a
와b
로 치환해서 계산하였는데, 베스트 코드는 함수를 여러개 만들었다. - 로직은 모두 비슷한데 어떤 방식으로 푸는 것이 가장 효율적인지를 알고 코드를 짜는 능력을 기를 필요가 있을 것 같다.