반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
단어를 뒤집어서 출력하는 문제입니다. 다만, <태그> 안 단어는 뒤집으면 안됩니다.
2022.02.28 - [Algorithm] - [구현/수학] 백준 9093 단어 뒤집기 - Python
단어 뒤집기 1 문제에서 단어 뒤집기를 구현했습니다. 공백을 구분으로 단어를 뒤집기만 하면 되므로, 굳이 스택을 쓰지 않더라도 [::-1] 리스트 슬라이싱으로 가능했습니다.
이 문제도 tag 유무에 따라 [::-1]를 해줘도 되나, 조금 논리가 복잡해져서 스택을 사용했습니다.
3. 코드
import sys
input = sys.stdin.readline
string = input().rstrip()
word_stack = []
tag = False
res = ''
for s in string:
# 공백이면 word_stack 비움
if s == " ":
while word_stack:
res += word_stack.pop()
res += s
# 태그 안 단어는 뒤집지 않음
elif s == "<":
while word_stack:
res += word_stack.pop()
tag = True
res += s
elif s == ">":
tag = False
res += s
elif tag:
res += s
# 태그 밖 단어는 뒤집음
else:
word_stack.append(s)
# print(res, tag)
# 출력
while word_stack:
res += word_stack.pop()
print(res)
스택은 선입후출의 구조를 가진 자료구조입니다. 먼저 들어간 자료가 가장 늦게 나옵니다. 따라서 스택을 이용하면 자연스레 단어가 뒤집어서 출력됩니다.
태그 밖 단어들은 스택에 넣어서 반대로 출력하고, 태그 안 단어들은 그대로 출력합니다.
2022.02.10 - [Algorithm] - [Algorithm] 스택(stack), 차곡차곡 쌓는 자료구조
반응형
'Algorithm' 카테고리의 다른 글
[자료구조/해시맵] 백준 1302 베스트셀러 - 파이썬(Python) (0) | 2022.06.15 |
---|---|
[정렬/탐색] 백준 2693 N번째 큰 수 - 파이썬(Python) (0) | 2022.06.14 |
[구현/수학] 백준 9076 점수 집계 - 파이썬(Python) (0) | 2022.06.12 |
[구현/수학] 백준 5361 전투 드로이드 가격 - 파이썬(Python) (0) | 2022.06.11 |
[Greedy/그리디] 백준 13305 주유소 - 파이썬(Python) (0) | 2022.06.10 |
댓글