반응형
문제
https://www.acmicpc.net/problem/17413
코드
s = input()
stack = []
ans = []
reverse = True
for i in s:
if i == ' ':
while stack:
ans.append(stack.pop())
ans.append(i)
elif i == '<':
reverse = False
while stack:
ans.append(stack.pop())
ans.append(i)
elif i == '>':
reverse = True
ans.append(i)
else:
if not reverse:
ans.append(i)
else:
stack.append(i)
while stack:
ans.append(stack.pop())
print(''.join(ans))
설명
우선 입력값을 s로 받아주고,
뒤집힐 글자를 넣어둘 stack과 정답을 넣어둘 ans를 리스트로 만들어주었다.
그리고 뒤집힐 상태를 정해줄 reverse도 만들어 주었다.
'<'가 오는 경우가 아니면 뒤집어야 하기에 기본 상태를 True로 설정했다.
문자열을 돌며 행동을 취한다.
1. 문자가 공백(' ') 일 경우
기존까지 쌓아놨던 문자열이 있다면 문자열을 역순으로 정답에 넣어준다.
이후 공백을 정답에 추가한다.
2. 문자가 '<'일 경우
reverse 상태를 False로 바꿔준다.
기존까지 쌓아놨던 문자열이 있다면 문자열을 역순으로 정답에 넣어준다.
이후 '<'를 정답에 추가한다.
3. 문자가 '>'일 경우
reverse 상태를 True로 바꿔준다.
'>'를 정답에 추가한다.
4. 그 외의 경우(그냥 문자인 경우)
reverse의 상태에 맞춰
True라면 스택에,
False라면 정답에 넣어준다.
문자열을 다 돌고 남은 스택을 확인한다.
스택이 남아있다면 역순으로 정답에 넣어준다.
최종적으로 정답을 출력한다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 11725: 트리의 부모 찾기 (0) | 2023.07.26 |
---|---|
[파이썬, Python] 백준 2468: 안전 영역 (0) | 2023.07.25 |
[파이썬, Python] 백준 2407: 조합 (0) | 2023.07.21 |
[파이썬, Python] 백준 4963: 섬의 개수 (0) | 2023.07.20 |
[파이썬, Python] 백준 6603: 로또 (0) | 2023.07.19 |