[백준] AC

최동혁·2023년 1월 2일
0

백준

목록 보기
68/68

풀이 방법

제목 그대로 문제가 진짜 AC다..
내가 백준을 싫어하는 이유 중 하나가 괜히 입/출력에 장난질을 해놔서 로직을 잘 짜더라도 틀리는 경우가 생긴다.
프로그래머스처럼 입/출력 신경 안쓰고 로직만 신경쓰게 해주면 참 좋을텐데 왜 이러는지 모르겠다.

일단 이 문제에서 중요한 것은 R 명령어가 나왔을 때, reverse()를 써서 뒤집으면 안된다.
실제 뒤집는 것이 아닌, deque의 성질과 flag를 이용해 가짜로 뒤집힌 척만 하는 것이다.
deque은 왼쪽에서도 뺄 수 있고, 오른쪽에서도 뺄 수 있어서 안뒤집혀있는 flag이면 popleft를, 뒤집혀져 있는 상태라면 pop을 해서 D 명령을 수행하면 된다.

풀이 코드

import sys
from collections import deque

T = int(sys.stdin.readline())

for i in range(T):
    command = sys.stdin.readline().rstrip()
    ls_len = int(sys.stdin.readline())
    input_ls = sys.stdin.readline().rstrip().split(',')
    ls = []
    for w in input_ls:
        temp = ""
        for j in w:
            if j != "[" and j != "," and j != "]":
                temp += j
        if temp:
            ls.append(int(temp))
    ls = deque(ls)
    flag = 1 # 1은 정방향, 0은 반대
    for word in command:
        if word == "R":
            if flag:
                flag = 0
            else:
                flag = 1
        else:
            if ls:
                if flag:
                    ls.popleft()
                else:
                    ls.pop()
            else:
                print("error")
                break
    else:
        if not flag:
            ls.reverse()
        print('['+','.join(map(str, ls))+']')
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글