[백준/파이썬] 1406번

민정·2023년 7월 29일
0

[백준/파이썬]

목록 보기
149/245
post-thumbnail

📍백준 1406번 문제

https://www.acmicpc.net/problem/1406

코드

# 문제1: 시간초과 
import sys
from collections import deque

input = sys.stdin.readline

arr = deque([])
li = str(input().rstrip())
num = int(input())
cursor = len(li)

for i in li:
    arr.append(i)
for _ in range(num):
    temp = list(input().split())
    if len(temp) == 2:
        cmd = temp[0]
        word = temp[1]
    else:
        cmd = temp[0]
    if cmd == 'L':
        if cursor > 0:
            cursor -= 1
    elif cmd == 'D':
        if cursor < len(arr):
            cursor += 1
    elif cmd == 'B':
        if cursor > 0:
            arr.remove(arr[cursor-1])

    elif cmd == 'P':
        arr.insert(cursor, word)
        cursor += 1
print(''.join(arr))
# 문제2
import sys

input = sys.stdin.readline

str1 = list(input().rstrip())
str2 = []
n = int(input())

for _ in range(n):
    cmd = list(input().split())
    if cmd[0] == 'L':
        if str1:
            str2.append(str1.pop())
    elif cmd[0] == 'D':
        if str2:
            str1.append(str2.pop())
    elif cmd[0] == 'B':
        if str1:
            str1.pop()
    else:
        str1.append(cmd[1])

str1.extend(reversed(str2))
print(''.join(str1))

풀이

  • 1번에서는 remove와 insert를 사용하기 때문에 시간초과가 발생했다. 즉, append와 pop을 이용해서 문제를 풀어야한다.
    다른 사람들의 풀이를 보니 커서를 기준으로 왼쪽, 오른쪽 배열을 2개를 나눠서 문제를 풀어야 한다.
  • 다들 천재,,, 나도 보고 배워야지,,,
profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글