문제
https://www.acmicpc.net/problem/1406
1406번: 에디터
첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수
www.acmicpc.net
이번 문제는 풀 때 고생을 했습니다..
처음에는 스택으로 풀고 시간 초과로 문자열로 다시 풀었는데 시간초과...
결국에는 스택으로 풀었습니다.
코드
import sys
stk = list(sys.stdin.readline().strip())
M = int(input())
temp_stk = []
for _ in range(M):
menu = sys.stdin.readline().strip().split()
if menu[0] == 'L':
if stk:
temp_stk.append(stk.pop())
elif menu[0] == 'D':
if temp_stk:
stk.append(temp_stk.pop())
elif menu[0] == 'B':
if stk:
stk.pop()
elif menu[0] == 'P':
stk.append(menu[1])
print(''.join(stk + list(reversed(temp_stk))))
코드는 짧은데 처음 스택으로 풀었을 때 문제가 문자를 옮기는 임시 스택을 만들었을 때
문자 정렬이 역순으로 된다는거였습니다...
근데 임시 스택을 그냥 역순으로 바꿔주면 되는건데 그걸 생각 못해서
어렵게 풀고 시간 초과뜨고 먼길을 돌아왔습니다. ㅠㅠ
'IT > 알고리즘' 카테고리의 다른 글
알고리즘 - 큐(queue) (0) | 2020.11.12 |
---|---|
백준 - 4949번 (0) | 2020.11.09 |
백준 - 9012번 (0) | 2020.11.07 |
알고리즘 - 스택(deque) (0) | 2020.11.06 |
백준 - 1874번(스택 수열) (0) | 2020.11.04 |
댓글