벡준 5430 AC Python

Derhon·2023년 11월 16일
0
post-thumbnail

백준 5430 AC

처음 답

import sys
import ast
from collections import deque

input = sys.stdin.readline

for _ in range(int(input())):
    error = False
    func = deque(list(input()))
    num = int(input())
    arr = deque(ast.literal_eval(input()))
    while func:
        first = func.popleft()
        if first == 'D':
            if len(arr) == 0:
                error = True
                break
            arr.popleft()
        if first == 'R':
            if func and func[0] == 'R':
                func.popleft()
                continue
            else:
                arr.reverse()
                continue
    if error: print("error")
    else: print("[" + ",".join(map(str, arr)) + "]")

시간초과 ㄷㄷ
알고보니 reverse는 딱 한 번만 되어야함

고친 답

import sys
import ast
from collections import deque

input = sys.stdin.readline

for _ in range(int(input())):
    error = False
    funcs = input()
    num = int(input())
    arr = deque(ast.literal_eval(input()))
    flag = 0
    for func in funcs:
        if func == 'D':
            if len(arr) == 0:
                error = True
                break
            if flag % 2 == 0:
                arr.popleft()
            else:
                arr.pop()
        if func == 'R':
            flag += 1
    if error: print("error")
    else:
        if flag % 2 == 0:
            print("[" + ",".join(map(str, arr)) + "]")
        else:
            print("[" + ",".join(map(str, reversed(arr))) + "]")

ast 모듈을 처음 알았다.
이거랑 flag로 한 번만 역정렬할 수 있다는 걸 알았을 때 진짜 뭔가 소름돋았다ㄷㄷ
이런식으로 구현 방법만 알면 쉽게 풀 수 있는 문제여따
(오히려 마지막에 문자열 보여주는게 화 잔뜪남)

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/

0개의 댓글