-
[프로그래머스 / Python] 최대공약수 최소공배수 | 초코더알고리즘/프로그래머스 2020. 1. 8. 22:17
문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 사항
-행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예
n
m
return
3
12
[3,12]
2
5
[1,10]
입출력 예 설명
입출력 예 #1
위의 설명과 같습니다.
입출력 예 #2
자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다.
접근법
우선 n의 모든 약수와 m의 모든 약수를 각각의 리스트에 저장해두었습니다.
그리고 n리스트, m리스트에 공통되게 들어있는 값 중 가장 큰수를 최대공약수로 리턴.
n과 m의 곱에서 최대공약수로 나눈 수를 최소공배수로 리턴.
나의 코드
def solution(n, m): n_list = [num for num in range(1,n+1) if n%num == 0] m_list = [num for num in range(1,m+1) if m%num == 0] max_list = [] for max_num in n_list: if max_num in m_list: max_list.append(max_num) max_sum = max(max_list) min_sum = (n*m)/max_sum return [max_sum, min_sum]
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Python] H-Index | 초코더 (0) 2020.01.09 [프로그래머스 / Python] 콜라츠 추측 | 초코더 (0) 2020.01.08 [프로그래머스 / Python] 하샤드 수 | 초코더 (0) 2020.01.08 [프로그래머스 / Python] 평균 구하기 | 초코더 (0) 2020.01.08 [프로그래머스 / Python] 핸드폰 번호 가리기 | 초코더 (0) 2020.01.08