백준 13241

soss·2022년 11월 4일
0
post-thumbnail

https://www.acmicpc.net/problem/13241

a, b = map(int, input().split())

def gcd(num1, num2):
    if(num2 > num1):
        temp = num2
        num2 = num1
        num1 = temp
        
    if(num1 % num2 == 0):
        return num2
    
    else:
        temp = num2
        num2 = num1 % num2
        num1 = temp
        return gcd(num1, num2)

print(int(a * b / gcd(a, b)))

시행착오

재귀호출을 사용하기 위해 16번째 줄에 return을 빼고 gcd(num1, num2)이라고 적었다. 실행했을 때 자꾸 10번째 줄에서 None 값이 리턴되길래 왜 그런가 했더니 파이썬은 return을 적지 않으면 기본적으로 None 값을 반환한다고 한다. 2번째 if문에는 리턴값이 있었으나 else 문에 리턴이 없어 생긴 문제라는 답변을 받았다. 재귀호출을 할 때에는 return을 쓰면 안 되는 줄 알았는데, 재귀함수에서는 return을 만나지 않으면 함수가 끝까지 실행된다고 한다. 예문을 확인해보고 좀 더 공부를 해봐야겠다.

알게된 것

유클리드 호제법

재귀함수의 호출, 리턴

profile
안녕하세요. 복습 목적으로 문제 풀이를 올리고 있습니다.

0개의 댓글