생각보다 쉬운 문제였다:
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번째 숫자가 최대공약수 일 것이고, 그 리스트의 모든 숫자를 곱한 값이 최소공배수일 것이다.
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 평균 구하기> Level 1 - 파이썬 (0) | 2020.11.25 |
---|---|
<프로그래머스 문제풀이: 콜라츠 추측> Level 1 - 파이썬 (0) | 2020.11.24 |
<프로그래머스 문제풀이: [카카오 인턴] 키패드 누르기> Level 1 - 파이썬 (0) | 2020.11.19 |
<프로그래머스 문제풀이: 짝수와 홀수> Level 1 - 파이썬 (0) | 2020.11.19 |
<프로그래머스 문제풀이: 제일 작은 수 제거하기> Level 1 - 파이썬 (0) | 2020.11.19 |