최대공약수와 최소공배수
2023. 3. 26. 01:08ㆍProgrammers
728x90
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, 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 |