[ Contents ]
1. 문제 (링크 참조)
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
2. 문제 풀이
단어를 뒤집어서 출력하는 문제입니다. 다만, <태그> 안 단어는 뒤집으면 안됩니다.
2022.02.28 - [Algorithm] - [구현/수학] 백준 9093 단어 뒤집기 - Python
[구현/수학] 백준 9093 단어 뒤집기 - Python
[ Contents ] 1. 문제 (링크 참조) 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문
star7sss.tistory.com
단어 뒤집기 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] 스택(stack), 차곡차곡 쌓는 자료구조
[ Contents ] 1. 스택(Stack) 스택(Stack): 후입선출(Last-in-First-out). 가장 최근에 들어간 자료부터 꺼내는 자료구조 스택은 말 그대로 쌓는(stack) 자료 구조입니다. 아래서부터 차곡차곡 쌓은 다음, 위에.
star7sss.tistory.com
'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 |
댓글