파이썬 Python/프로그래머스

[프로그래머스] 최대공약수와 최소공배수

꿈꾸me 2022. 3. 25. 17:15
728x90

프로그래머스 '최대공약수와 최소공배수' 풀이

 

문제 ) 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

  • 두 수는 1이상 1000000이하의 자연수입니다.

나의 풀이 )

 

아래 더보기란에 추가 설명

더보기

1. n 보다 m이 항상 크다는 조건이 문제에 제시되어 있지 않으므로, 계산의 편리를 위해 if문을 이용해 n이 m보다 클 경우 두 수의 자리를 바꿔줍니다.

2. 최대공약수는 1부터 n까지 숫자 중에 있으므로, for문 범위를 1부터 n+1까지로 해줍니다. 그리고 if문을 이용하여 n과 m이 i로 모두 나누어 떨어질 경우 answer1에 i를 담아줍니다. 이를 숫자 n까지 반복해줍니다.

3. 최소공배수는 m부터 n*m까지의 숫자 중에 있으므로, for문의 범위를 m부터 n*m+1까지로 해줍니다. 그리고 if문을 이용하여 m의 배수를 n으로 나누어 떨어지면 공배수라는 뜻이고, 첫번째로 나누어 떨어지는 공배수가 최소공배수이므로 이를 answer2에 넣어주고 break를 이용하여 for문을 탈출해줍니다. 

4. answer1과 answer2를 순서대로 answer에 담아줍니다.

5. answer를 리턴해줍니다.

수정할 부분이 발견되거나 궁금한 점이 있으면 댓글 남겨주세요.

성장을 위한 댓글은 환영입니다 :)

728x90