꾸준히 합시다
백준 파이썬 1406번: 에디터 본문
https://www.acmicpc.net/problem/1406
# Solution 1 - 시간 초과 ...
import sys
word = list(sys.stdin.readline().rstrip())
test_case = int(sys.stdin.readline())
new = []
for i in range(test_case):
cmd = list(sys.stdin.readline().split())
if cmd[0] == "L" and word:
new.append(word.pop())
elif cmd[0] == "D" and new:
word.append(new.pop(0))
elif cmd[0] == "B" and word:
word.pop()
elif cmd[0] == "P":
word.append(cmd[1])
print(''.join(word + new[::-1]))
접근법은 처음부터 꽤 괜찮았던 것 같다. 하지만 역대급으로 시간 초과가 많이 나온 문제... 대략 15-20번정도 나온 듯 하다.
# Solution 2
import sys
s1 = []
s2 = []
word = list(sys.stdin.readline().strip())
num = int(sys.stdin.readline())
s1 = word
for i in range(num):
line = sys.stdin.readline().split()
if line[0]=='L':
if s1:
s2.append(s1.pop())
elif line[0]=='P':
s1.append(line[1])
elif line[0]=='D':
if s2:
s1.append(s2.pop())
elif line[0]=='B':
if s1:
s1.pop()
s2.reverse()
sys.stdout.write(''.join(s1) + ''.join(s2))
솔직히 두 솔루션의 큰 차이는 모르겠다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 1543번: 문서 검색 (0) | 2021.03.08 |
---|---|
백준 파이썬 5397번: 키로거 (0) | 2021.03.08 |
백준 파이썬 1065번: 한수 (0) | 2021.03.07 |
백준 파이썬 5635번: 생일 (0) | 2021.03.06 |
백준 파이썬 1158번: 요세푸스 문제 (0) | 2021.03.06 |
Comments