티스토리 뷰

PS/Python

[Python] 백준 #5430 AC - deque

yoo.o 2020. 8. 16. 15:40
반응형

문제

 

5430번: AC

문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있

www.acmicpc.net

풀이

나를 너무너무 힘들게했던.... 실버2에 덱문제라고 너무 만만하게 봤는지

런타임에러, 시간초과, 틀렸습니다를 모두 겪고나서야 겨우 맞았다.

 

먼저

1. R이 들어올때마다 reverse를 하면 절대 안된다 -> 무조건 터짐

따라서 reverse flag을 두고 R이 들어올때마다 1->0 0->1으로 바꿔준 후, 마지막에 reverse flag이 1이면 출력하기 전에 한번 뒤집어줬다.

 

2. 출력형식이 [1, 2, 3]이 아니라 [1,2,3] 이다. 여백없음! 보통 이러면 출력형식이 잘못됐다고 나오던데 그냥 틀렸다고 나와서 한참 찾았다. 

 

3. 
1
RR
0
[]

이걸로 돌려보고 알았다. 나는 처음에 큐의 마지막 원소가 출력될때 ']'를 붙이는 방법으로 짜서

큐에 아무 원소가 없을때는 '[' 혼자 출력되는 문제가 있었다. 

큐를 출력하는것과 별개로 처음과 끝에 '['얘랑 ']'얘를 추가해줘서 결국 성공!

 

 

이 외의 문제가 있다면 여기를 꼼꼼하게 읽어보고 다시 풀어보는 것을 추천한다. 

 

글 읽기 - ★☆★☆★ [필독] AC FAQ ★☆★☆★

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

 

import sys
from collections import deque

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

for _ in range(TC):
    cmd = sys.stdin.readline().strip()
    size = int(sys.stdin.readline())

    # 덱에 입력받아서 넣기
    line = sys.stdin.readline()[1:-2].split(",")
    queue = deque()
    for each in line:
        if each != '':
            queue.append(each)

    errorflag = 0
    reverse = 0

    # 명령어 하나씩
    for each in cmd:
        if each == "R": # reverse(flag) 바꿔주기
            if reverse == 0:
                reverse = 1
            else:
                reverse = 0
        else: #  D면 reverse(flag)방향에 따라 앞이나 뒤에서 하나씩 삭제
            if queue and queue[0] != '':
                if reverse == 0:
                    queue.popleft()
                else:
                    queue.pop()
            else:
                errorflag = 1
                break

    if errorflag == 1:  # 에러플래그 1이면 에러 출력
        print("error")
    else:
        if reverse == 1:  # 리버스 플래그 1이면 뒤집어서 출력
            queue.reverse()

        print("[", end='')
        for i in range(len(queue)):
            if i == len(queue)-1:
                print(str(queue[i]),end='')
            else:
                print(queue[i],end=',')
        print("]")

 

반응형