[코드트리 챌린지] 숫자 차례로 출력하기
숫자 차례로 출력하기
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
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. ' 다음 함수 호출 후 -> 실행'
두 가지 경우가 있을 것이다. 첫번째는 먼저 호출한 함수가 먼저 실행된다.
큐 구조를 생각하면 편하다.
두번째는 먼저 호출한 함수가 가장 나중에 실행된다. 그 전에 다음함수를 호출해서 끝까지 같다가 실행을 차례차례 되돌아 오며 하기 때문이다.
이것은 스택 구조를 생각하면된다.
그렇게 두가지 함수를 짜면된다.
재귀함수 정의 시 베이스 케이스를 생각해야한다. 그렇지 않으면 무한대로 갈 수 있기 때문에 방지하고자 제한을 걸어두는 것이다.