https://www.acmicpc.net/problem/17413
문제풀이
import sys
input=sys.stdin.readline
S=input().strip()+' ' #\n 없게 만들고 끝에 공백을 만나면 조건을 수행할 수 있게 공백을 더해준다.
stack=[]
result=''
cnt= 0
for i in S:
if i=='<':
cnt=1
for _ in range(0,len(stack)):
result+= stack.pop()
stack.append(i)
if i == '>':
cnt=0
for _ in range(0,len(stack)):
result+=stack.pop(0)
if i==' ' and cnt==0:
stack.pop()
for _ in range(len(stack)):
result+=stack.pop()
result+=' '
print(result)
정리
'<'을 만나기 전까지 계속 스택에 문자열을 넣어주다가 '<'을 만난다면 결과 문자열에 이전까지 스택에 넣었던 문자열을 거꾸로 저장해 준다. '<'를 만났다면 '>'을 만나기 전까지 스택에 문자열을 넣어주다가 '>'을 만난다면 스택에 저장되어 있던 것을 순서대로 결과 문자열에 넣어준다.
'<'을 만나지도 않고 '>'도 만나지 않는 상태에서 계속 문자열을 스택에 넣어주다가 중간에 공백을 만나게 된다면 스택에 저장된 공백(스택 맨뒤에 있음)을 제거하고 원래 스택에 저장되어 있던 문자열을 다시 결과에 거꾸로 넣어준다. 그리고 공백을 제거했으니까 문자열을 다 넣어준 후에 공백을 더해준다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] #2578 빙고 (python) (0) | 2024.05.11 |
---|---|
[백준] #1213 팰린드롬 만들기 (python) (0) | 2024.05.04 |
[백준] #18111 마인크래프트 (python) (0) | 2024.04.29 |
[백준] #2108 통계학 (python) (0) | 2024.04.27 |
[백준] #2477 참외밭 (python) (0) | 2024.04.27 |