본문 바로가기
IT/알고리즘

백준 - 1406번

by Sungjun_ 2020. 11. 9.

문제

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

댓글