알고리즘 테스트/프로그래머스 문제풀이 및 해설
<프로그래머스 문제풀이: 최대공약수와 최소공배수> Level 1 - 파이썬
개발린이
2020. 11. 23. 22:54
생각보다 쉬운 문제였다:
def solution(n, m):
num_list = []
for i in range(1, max(n+1, m+1)):
if n%i == 0 and m%i == 0:
num_list.append([i, n/i, m/i])
max_num = max(num_list)
j = 1
for k in max_num:
j *= k
return [max_num[0], j]
가장 큰 숫자의 range를 사용하여, 그 숫자로 두 숫자 n, m 둘 다 나누어 떨어진다면, num_list 라는 리스트에 추가해주고, 이것이 끝난다면, 가장 큰 숫자로 나누어떨어진 숫자를 포함하는 리스트가 최대공약수와 최소공배수에 대한 정답을 줄 것이다. 리스트의 0번째 숫자가 최대공약수 일 것이고, 그 리스트의 모든 숫자를 곱한 값이 최소공배수일 것이다.