코드트리 챌린지

[코드트리 챌린지] 숫자 차례로 출력하기

우당탕탕코딩일기 2023. 10. 8. 18:01

 

 

숫자 차례로 출력하기


 

https://www.codetree.ai/missions/5/problems/to-output-numerically?&utm_source=clipboard&utm_medium=text 

 

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

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

www.codetree.ai

 

 

정수 N이 주어지면 재귀함수를 2개 작성하여 첫 번째 재귀함수를 이용하여 1부터 N까지 숫자를 차례대로 출력하고, 두 번째 재귀함수를 이용하여 N부터 1까지 차례로 출력하는 프로그램을 작성해보세요. 단, 두 재귀함수 모두 인자로 N을 넘기는 함수여야만 합니다.

입력 형식

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

  • 1 ≤ N ≤ 100

출력 형식

첫 번째 줄에는 1부터 N까지 차례로 공백을 사이에 두고 출력합니다.
두 번째 줄에는 N부터 1까지 차례로 공백을 사이에 두고 출력합니다.

 

예제1

입력:

7

출력:

 

1 2 3 4 5 6 7
7 6 5 4 3 2 1

 

 

 

내가 짠 코드


n = int(input())
k = n

def print1ton(n):
    if(n==0):
        return
    print1ton(n-1)
    print(n, end=" ")


def printnto1(n):
    if(n==0):
        return
    print(n, end=" ")
    printnto1(n-1)

print1ton(n)
print()
printnto1(n)

우선 숫자를 입력받는다 ->  n = int(input())

 

1부터 n 까지 출력하는 함수와

n부터 1까지 출력하는 함수를 구현해야한다.

 

반복문으로 실행할 수도 있지만 재귀함수로 구현하겠다.

재귀함수의 구조를 살펴보면

 

1. ' 실행후 -> 다음 함수 호출 '

2. ' 다음 함수 호출 후 -> 실행'

 

두 가지 경우가 있을 것이다. 첫번째는 먼저 호출한 함수가 먼저 실행된다.

큐 구조를 생각하면 편하다.

두번째는 먼저 호출한 함수가 가장 나중에 실행된다. 그 전에 다음함수를 호출해서 끝까지 같다가 실행을 차례차례 되돌아 오며 하기 때문이다.

이것은 스택 구조를 생각하면된다.

 

그렇게 두가지 함수를 짜면된다.

 

재귀함수 정의 시 베이스 케이스를 생각해야한다. 그렇지 않으면 무한대로 갈 수 있기 때문에 방지하고자 제한을 걸어두는 것이다.

728x90