Python) 최대공약수와 최소공배수

난이도 : Level 1
유형 : 연습문제
카테고리 : 프로그래머스
날짜 : 2022-02-09

문제 풀이

최대공약수와 최소공배수를 구하는 문제였다.

  1. minmax를 이용하여 입력 받는 수 n, m을 a와 b에 넣어주었다.

    1
    2
    3
    # n이 2, m이 5일 때
    a, b = min(n, m), max(n, m)
    # a = 2, b = 5
  2. while문을 사용하여 그 안에 코드를 반복해주었다. r은 최소 값과 최대 값을 나눠주고 그 값을 b에 대입한다. 여기서 b가 0이 되면 while문을 빠져 나온다.

    1
    2
    3
    4
    5
    # n이 2, m이 5일 때
    while b != 0 :
    r = a % b # 2 -> 1 -> 0
    a = b # 5 -> 2 -> 1
    b = r # 2 -> 1 -> 0
  3. 최대공약수와 최소공배수를 리턴한다.

    1
    2
    3
    # n이 2, m이 5일 때
    return [a, n*m//a]
    # [1, 10]

전체 코드

1
2
3
4
5
6
7
8
def solution(n, m):
a, b = min(n, m), max(n, m)

while b != 0 :
r = a % b
a = b
b = r
return [a, n*m//a]

다른 사람의 풀이

a, b = b, t 이렇게 한번에 쓸 수도 있다.

1
2
3
4
5
6
7
8
9
def solution(n, m):
a, b = max(n, m), min(n, m)
t = 1
while t > 0:
t = a % b
a, b = b, t
answer = [a, int(n*m/a)]

return answer
Author

Sujeong Kim

Posted on

2022-02-09

Updated on

2022-02-09

Licensed under

댓글