Home AC 백준 5430번 덱
Post
Cancel

AC 백준 5430번 덱

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

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

함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다.

함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, “AB”는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, “RDD”는 배열을 뒤집은 다음 처음 두 수를 버리는 함수이다.

배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from collections import deque
num = int(input())
for i in range(num):
    oper = str(input())
    lenght = int(input())
    num_list = str(input())[1:-1].split(',')
    count = 0
    A=True
    if len(num_list[0]) != 0:
        count = 1
        num_list = deque(map(int,num_list))
    for j in range(len(oper)):
        now = oper[j]
        if now=='R':
            num_list.reverse()
        elif now=='D' and num_list and count==1:
            num_list.popleft()
        else:
            print('error')
            A=False
            break
    if A:
        print(list(num_list))

뭔가 코드가 점점 망해가는 느낌인데…. 일단 진행해보겠습니다. 순서를 뒤집는것은 reverse로 첫번째 숫자를 빼는 것은 deque의 popleft를 사용했습니다. 다만 이때 ‘[]’ 아무것도 없을때의 입력은 어떻게 처리하면 좋을지 고민이었습니다.

아무것이 없을때 빼는 것은 안되지만 뒤집는것은 안된다는 설명이 따로 없었기 때문입니다. 그래서 반복문이 좀 보기 좋지않게 나와있는데 테스트케이스는 통과를 하지만 pypy로 하더라도 시간초과가 뜨네요 오늘은 여기까지하고 내일 좀더 고민해봐야겠습니다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.