1. 문제
2. 접근방법
재귀함수를 처음 접할 때 풀면 좋을 것 같은 문제
컴공에서는 꽤 유명한 밈? 같이 돌았던 이야기인데
문제에서 만나서 반가웠다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
이 4문장이 계속해서 반복 하는데
반복 때마다 _ 가 4개씩 추가 된다.
또 함수에서 빠져나온뒤 출력하는
라고 답변하였지 도 있다.
기저조건은 반복횟수 == N 인 경우이고 이때만 기존 문장과 조금 다른 문장이 들어간다.
N 으로 2가 들어온경우
0회전 때 ____ * 0 에
문장 반복
1회전 때 ____ * 1 에
문장 반복
2회전 때 ____ * 2 에
조금 다른 문장
2회전 + 라고 답변하였지
1회전 + 라고 답변하였지
0회전 + 라고 답변하였지
가 된다.
3. 파이썬 코드
N = int(input())
a = []
S = '어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n'
a.append('"재귀함수가 뭔가요?"\n')
a.append('"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n')
a.append('마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n')
a.append('그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."\n')
a.append('라고 답변하였지.\n')
def recur(n):
global S
if n == N:
S += "____" * n
S += a[0]
S += "____" * n
S += '"재귀함수는 자기 자신을 호출하는 함수라네"\n'
else:
for i in range(4):
S += "____" * n
S += a[i]
recur(n+1)
S += "____" * n
S += a[4]
recur(0)
print(S)
4. 마치며
파이썬으로 알고리즘 기본 개념들부터 풀어보고 있는데
확실히 아직 익숙치가 않아서 코드를 짜는게 어색해 죽겠다..
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준] 14725 개미굴 (1) | 2021.02.26 |
---|---|
[백준] 2447 별 찍기 - 10 (2) | 2021.02.25 |
[백준] 1270 전쟁 - 땅따먹기 (0) | 2021.02.23 |
[백준] 1016 제곱ㄴㄴ수 (0) | 2021.02.13 |
[백준] 10825 국영수 (1) | 2021.02.07 |