https://www.acmicpc.net/problem/5397
Python
- 처음 코드
test_case = int(input())
result = []
for i in range(test_case):
pw = list(input())
left = []
right = []
for p in pw:
if p == '-':
if len(left) < 1:
continue
left.pop()
elif p == '>':
if len(right) < 1:
continue
left.append(right.pop())
elif p == '<':
if len(left) < 1:
continue
right.append(left.pop())
else:
left.append(p)
result.append("".join(left))
for r in result:
print(r)
- 해설 보고 수정한 코드
놓친 부분: right stack 합치기(reversed())
result 따로 저장하지 않고 바로 출력해도 된다는 것
test_case = int(input())
for i in range(test_case):
pw = list(input())
left = []
right = []
for p in pw:
if p == '-':
if left: # len 체크 부분을 수정
left.pop()
elif p == '>':
if right:
left.append(right.pop())
elif p == '<':
if left:
right.append(left.pop())
else:
left.append(p)
left.extend(reversed(right)) # right에 남아있을 문자열을 reversed() 후 합치기
print(''.join(left)) # 바로 print 해도 됨
넓게 생각하기!!
stack을 2개 이상 활용할 수 있다는 것
세로가 아닌 가로로 볼 수 있다는 것
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 2798번 - 블랙잭 (0) | 2021.07.21 |
---|---|
[Python] 백준 2920번 - 음계 (0) | 2021.07.21 |
[Python] 백준 10996번 - 별 찍기 - 21 (0) | 2020.06.11 |
[Python] 백준 2446번 - 별 찍기 - 9 (0) | 2020.06.09 |
[Python] 백준 2523번 - 별 찍기 - 13 (0) | 2020.06.09 |
댓글