-
최대공약수와 최소공배수Programmers 2023. 3. 26. 01:08728x90
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한 사항
- 두 수는 1이상 1000000이하의 자연수입니다.
입출력 예
n m return
3 12 [3, 12] 2 5 [1, 10] 나의 풀이
def solution(n, m): a = n b = m if n>m: # 반드시 큰 값이 m, 작은 값이 n이 되게끔 만들어준다. n,m = m,n while m%n: # m을 n으로 나눈 나머지가 0이 아닌 동안에 r = m%n m = n n = r return [n, a*b/n] # n은 while 루프를 통해 최대공약수가 되며, #최소공배수는 두 수의 곱에서 n으로 나눈 값이다.
너무 오래걸렸던 탓일까, 잘 안 풀려서 구글링을 통해 문제를 풀었다…
접근하는 방향은 비슷했으나, 계속 if 절로 처음부터 처리하고 else를 이용해 재귀함수를 사용하려고 했던 것이 패착이 된 것 같다. 처음 접근했던 나머지 연산에 더 집중을 했다면 충분히 나올 수 있었던 코드였어서 더욱 아쉽다.
728x90'Programmers' 카테고리의 다른 글
[재귀 함수] 재귀 함수란 무엇인가요? (0) 2023.04.07 같은 숫자는 싫어 (0) 2023.03.26 행렬의 덧셈 (0) 2023.03.23 나누어 떨어지는 숫자배열 (0) 2023.03.19 실패율 (0) 2023.03.19