본문 바로가기
알고리즘/📌백준

백준 : 재귀함수가 뭔가요?

by IMSfromSeoul 2021. 8. 2.

🏆 문제 정보

난이도 : 중하

문제 타입 : 시물레이션

17478번
https://www.acmicpc.net/problem/17478

📌 문제

1. n값에 따라서 String 문자열 앞에 ____ 를 붙여서 출력하기.

2. n값에 따라서 반복 호출하기

📌 생각

1. 파이썬에서 따음표 -> \"

2. 적당히 구현 패턴 생각하고, 검증은 print()를 찍어보면서 구현해보았는데, 실전에서는 좀 더 검증시간을 갖는게 좋을 것 같다. 디테일한 부분은 index-1, +1 등으로 숫자 때려 맞추기 식으로 print() 해보다가 맞으면 제출하는데, 난이도가 낮은 문제에서는 괜찮을 수 있으나 난이도가 높아지면 금방 헤맬 수 있을 것 같은 느낌이 든다.

🔥 풀이

1. global index= 1 을 두고, ____ <-- underbar (_) 4개가 index에 따라 늘어나므로, 

line =""
for i in range(4*index):
    line += "_"
index+=1

위와 같이 라인을 붙였다.

 

2. split("\n") 띄어쓰기로 split을 했다.

 

3. 반복되는 부분, 중간 부분, 끝나는 부분을 나누어서 진행했다.

 

4. 숫자는 대충 때려 맞추고, 진행하면서 print()를 찍어보며 조정했다.

📌 코드

n= int(input())

print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. ")
s = "\"재귀함수가 뭔가요?\"\n\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\""
print(s)

index = 1

def recurse(s_value):
    global index

    # 라인 붙이기
    line =""
    for i in range(4*index):
        line += "_"
    index+=1
    split_arr = s_value.split("\n")
    for i in range(len(split_arr)):
        split_arr[i] = line + split_arr[i]
    result_string = ""

    # 문자열 잇기
    for s_indi in split_arr:
        result_string += s_indi + "\n"
    result_string = result_string[0:len(result_string)-1]
    print(result_string)

def recurse_last():
    global index
    line =""
    for i in range(4*index):
        line += "_"
    s_1 = "\"재귀함수가 뭔가요?\""
    s_1 = line+s_1

    s_2 = "\"재귀함수는 자기 자신을 호출하는 함수라네\""
    s_2 = line+s_2

    print(s_1)
    print(s_2)

def recurse_reverse():
    global index
    index-=1

    line =""
    for i in range(4*index):
        line += "_"
    s_1 = "라고 답변하였지."
    s_1 = line + s_1
    print(s_1)

while index<n:
    recurse(s)

recurse_last()

index+=1

while index>0:
    recurse_reverse()

📌 다른풀이 - 재귀풀이

https://yoonsang-it.tistory.com/51

문제의 의도는 이게 맞는 것 같다.

'알고리즘 > 📌백준' 카테고리의 다른 글

백준: Z  (0) 2021.08.20
백준: 배열돌리기 3  (0) 2021.08.12
백준: 크로아티아 알파벳  (0) 2021.08.12
백준 : 2493번 탑  (0) 2021.08.05
백준 : 스위치 켜고 끄기  (0) 2021.08.02

댓글