본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[python] 백준 5430 - AC

5430번: AC (acmicpc.net)

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

 

파이썬의 deque를 활용하는 문제였다.

그런데 처음에 계속 시간초과가 나서 코드를 수정하였고 

이후로는 답이 틀렸다고 나와서 또 코드를 수정하였다.

 

간과한 점이 있었는데 

문제를 꼼꼼하게 고민해보는 습관을 좀 길러야 할 것 같다.

 

이 문제를 풀면서 주의해야 할 점은

 

1. R이 두번 나올 경우 역순의 역순 즉, 원래 상태와 비슷하기 때문에 R의 개수를 세어서 짝수인 경우는 

    굳이 역순으로 바꿔줄 필요가 없다.

2. D를 수행할 때 배열에 아무것도 들어가 있지 않는다면 error를 출력해야 하지만 

    만약 R을 수행할 때 역시 배열에 아무것도 들어가 있지 않는다면 그대로 빈 배열 []를 출력해야 한다.

 

이 두가지를 고려해서 다시 코드를 작성하였더니 통과하였다.

 

import sys
from collections import deque

input = sys.stdin.readline

for _ in range(int(input())):
    
    p = input()
    n = int(input())
    
    lst = str(input())
    
    if n != 0:
        lst=deque(lst[1:-2].split(','))
    else:
        lst=deque([])
    rev=0
    flag=0
    for i in p:
        if i == 'R':
           rev +=1
        else:
            if i == 'D':
                if len(lst)==0:
                    flag=1
                    print('error')
                    break
                else:
                    if rev %2 == 0:
                        lst.popleft()     
                    else:
                        lst.pop()
    
    if flag != 1:
        if rev %2 != 0:
            lst.reverse()
        print('[', end='')
        print(*lst,sep=',', end='')
        print(']')
728x90