🏆 문제 정보
난이도 : 중하
문제 타입 : 시물레이션
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 |
댓글