✅ 문제
✅ 풀이
이 문제는 하나의 커서로 이동하는 특징을 고려해서, 스택으로 풀 수 있다.
💡 Point
* 일반 문자, 왼쪽 커서 이동('<'), 오른쪽 커서 이동('>'), 백 스페이스('-') 네 가지 조건 나누기
1. 일반 문자: pwd 배열에 그대로 입력
2. 백 스페이스: pwd 배열에서 마지막 글자 제거 - 스택의 pop() 이용
3. 왼쪽 커서 이동 - 현재 커서가 있는 곳중간부터 입력이 들어가야 하므로 오른쪽 문자를 제거해놓아야 함
1) pwd의 마지막 글자를 제거하여 임의의 배열(cursor)에 담아 놓고,
2) 다른 연산이 끝난 후 다시 뒤에다가 붙이기(붙일 땐 거꾸로)
4. 오른쪽 커서 이동 - 임의의 배열에 담아둔 글자가 있다면 그 글자 다음에 새로운 문자를 입력받아야 함
1) cursor의 마지막 글자를 제거하여 pwd 배열 마지막 요소로 붙임
* 입력받은 문자에 대한 연산이 끝난 후 cursor 배열에 남은 요소를 pwd 배열 마지막에 역순으로 이어 붙임
T = int(input())
for _ in range(T):
pwd = []
cursor = []
word = input()
for i in word:
if i == '-':
if pwd:
pwd.pop()
elif i == '<':
if pwd:
cursor.append(pwd.pop())
elif i == '>':
if cursor:
pwd.append(cursor.pop())
else:
pwd.append(i)
pwd.extend(reversed(cursor))
print(''.join(pwd))
'++ > 자료구조&알고리즘' 카테고리의 다른 글
[baekjoon] 15903. 카드 합체 놀이 (0) | 2024.01.09 |
---|---|
[baekjoon] 2002. 추월 (1) | 2024.01.09 |
[Leetcode] 21. Merge Two Sorted Lists (0) | 2024.01.08 |
[Leetcode] 206. Reverse Linked List (0) | 2024.01.08 |
[Leetcode] 1337. The K Weakest Rows in a Matrix (0) | 2024.01.06 |