📝 문제 설명
>
[문제 요약]
떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다.
JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자.
https://www.acmicpc.net/problem/17478
🎨 풀이
💡 전체 코드
def chatbot(num):
if num == 0:
return 0
else :
chatbot(num-1)
print(("____" * (num-1))+"\"재귀함수가 뭔가요?\"")
print(("____" * (num-1))+"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.")
print(("____" * (num-1))+"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.")
print(("____" * (num-1))+"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"")
n = int(input())
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
chatbot(n)
print(("____" * (n))+"\"재귀함수가 뭔가요?\"")
print(("____" * (n))+"\"재귀함수는 자기 자신을 호출하는 함수라네\"")
for i in range(n,-1,-1):
print(("____" * i) + "라고 답변하였지.")
> 핵심 : 재귀 함수 사용!
🍦 코드 설명 (실행 순서대로 나열)
# main
n = int(input())
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
chatbot(n)
1. n을 입력받는다.
2. 제일 처음 문장인 "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다." 를 출력한다.
3. chatbot 함수를 실행한다.
# chatbot
def chatbot(num):
if num == 0:
return 0
else :
chatbot(num-1)
print(("____" * (num-1))+"\"재귀함수가 뭔가요?\"")
print(("____" * (num-1))+"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.")
print(("____" * (num-1))+"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.")
print(("____" * (num-1))+"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"")
4. num이 0이라면 0을 return한다.
5. num이 0이 아니라면 chatbot(num-1)를 실행한다.
- num이 1일 때부터 그 뒤에있는 print를 출력한다. (num = 1 , 2 , ... 이 순서로 출력됨)
6. 4줄을 출력한다.
- 이 때, "를 출력하기 위해서는 앞에 \를 붙여야한다. ^ㅁ^
# main
print(("____" * (n))+"\"재귀함수가 뭔가요?\"")
print(("____" * (n))+"\"재귀함수는 자기 자신을 호출하는 함수라네\"")
for i in range(n,-1,-1):
print(("____" * i) + "라고 답변하였지.")
7. 앞에서 chatbot 함수로 질문을 다 했으니, 답변을 출력한다. (2줄)
8. for문을 이용한다. (n부터 0까지 내려가면서)
9. "라고 답변하였지."를 출력한다.
끝~
⭐ 느낀점
> 오늘은 좀.. 그렇다. 풀긴 풀었는데, 재귀를 제대로 활용하지 못한 느낌이 든다. 풀면서도 알듯말듯했는데 ㅠㅠ 좀 아쉬움이 남긴한다. 나중에 좀 더 생각해보고 발전시켜보아야겠다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 2869번 - 달팽이는 올라가고 싶다 (파이썬) (0) | 2022.07.30 |
---|---|
[백준] 2864번 - 5와 6의 차이 (파이썬) (0) | 2022.07.29 |
[백준] 10870번 - 피보나치 수 5 (파이썬) (0) | 2022.07.27 |
[백준] 10872번 - 팩토리얼 (파이썬) (0) | 2022.07.26 |
[백준] 1026번 - 보물 (파이썬) (0) | 2022.07.25 |