코드트리 챌린지

[코드트리] 홀수 짝수에 따른 출력값 / 재귀함수

우당탕탕코딩일기 2023. 10. 26. 14:23

 

 

 

https://www.codetree.ai/missions/5/problems/output-value-based-on-odd-even-numbers?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

홀수 짝수에 따른 출력값


정수 N이 주어지고, N이 홀수인 경우에는 1부터 N까지의 홀수를, N이 짝수인 경우에는 2부터 N까지의 짝수의 합을 출력하는 프로그램을 재귀 함수를 이용하여 작성해보세요.

 

입력 형식

첫 번째 줄에 정수 N이 주어집니다.

  • 1 ≤ N ≤ 100

출력 형식

첫 번째 줄에는 출력하는 모든 수의 합을 출력합니다.

 

입출력 예제

예제1

입력:

5

 

출력:

 

9

 

 

 

 

내가 짠 코드


n = int(input())

def f(n):
    if n==1:
        return 1
    if n==2:
        return 2
    
    return n+f(n-2)

print(f(n))

재귀함수 문제이다. 우선 n 을 입력받은 후 홀수이면 지금까지의 홀수의 합을, 짝수이면 지금 까지의 짝수의 합을 출력해야한다.

 

우선 베이스케이스를 정의하자.

이 문제에서는 홀수가 들어오면  n==1 일때가 베이스케이스가 되고 짝수가 들어오면 n==2 일 때가 베이스케이스가 되므로 각각 1, 2 를 리턴할 수 있도록 한다.

 

그 후 재귀적으로 처리가 가능한데, 짝수일 때 짝수만 더하려면 n-2 번째를 호출하여 자기 전전 녀석을 호출해야한다.

홀수일 때도 마찬가지다. 자기 자신 + 자기 전전 녀석 호출이 필요하다. 따라서 리턴값은 n+f(n-2) 가된다.

728x90