AC 성공다국어
1 초 | 256 MB | 123631 | 27483 | 19479 | 19.946% |
문제
선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.
함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다.
함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 함수이다.
배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 최대 100이다.
각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. p의 길이는 1보다 크거나 같고, 100,000보다 작거나 같다.
다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. (0 ≤ n ≤ 100,000)
다음 줄에는 [x1,...,xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. (1 ≤ xi ≤ 100)
전체 테스트 케이스에 주어지는 p의 길이의 합과 n의 합은 70만을 넘지 않는다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
예제 입력 1 복사
4
RDD
4
[1,2,3,4]
DD
1
[42]
RRD
6
[1,1,2,3,5,8]
D
0
[]
예제 출력 1 복사
[2,1]
error
[1,2,3,5,8]
error
전형적인 큐 구조 문제라고 생각하고 문제를 풀었다.
문제에 나와있는대로 연산은 R과 D가 있는데 이를 함수로 두고 풀어도 될 듯 하다.
애 먹은 부분은 일단, 입력값이 숫자로만 주어지는게 아니라 []와 같은 대괄호로 씌워져있는 리스트라는 점과, R연산은 리스트가 비어있어도 error가 아니라는 점이다.
#5430 AC
import sys
from collections import deque
t = int(input())
for _ in range(t):
flag = True #출력에 대한 flag
rFlag = True#뒤집은 상태의 플래그, 이 플래그를 통해 앞에서 지울지 뒤에서 지울지 선택. true는 앞에서 false는 뒤에서
s = sys.stdin.readline().rstrip()#명령어 받기
n = int(sys.stdin.readline().rstrip())#숫자 갯수 받기
li = deque(eval(sys.stdin.readline()))
for i in s:
if i == 'R':#뒤집혔을경우
if len(li) > 0:
rFlag = not rFlag
# else:
# flag = False
# print('error')
# break
if i == 'D':
if len(li) > 0:
if rFlag:
li.popleft()
else:
li.pop()
else:
flag = False
print('error')
break
if flag and len(li) == 0:
print('[]')
elif flag and rFlag:
print('[',end='')
for i in range(len(li)):
if i == len(li) - 1:
print("{}]".format(li[i]))
else:
print(li[i],end=',')
elif flag and not rFlag:
print('[',end='')
for i in range(len(li)-1,-1,-1):
if i == 0:
print("{}]".format(li[i]))
else:
print(li[i],end=',')
출력을 할 때, 주어진 출력값과 같은 서식을 줘야한다.
가령, 리스트를 출력한다면 [1, 2, 3, 4] 와 같은 형식으로 출력된다. 즉 띄워쓰기가 포함된 출력이다.
이 문제에서는 띄워쓰기를 포함시키지 않아야 하기 때문에 출력부에서 서식을 잘 맞춰서 제출하면 성공이다.
'Study > CodingTest' 카테고리의 다른 글
[백준/Python] (S2)21736 - 헌내기는 친구가 필요해 (0) | 2023.07.27 |
---|---|
[백준/Python] (G5)10026 - 적록색약 (0) | 2023.07.26 |
[백준/Python] (S4)1755 - 숫자놀이 (0) | 2023.07.14 |
[백준/Python] (S2) 1198 - 삼각형으로 자르기 (0) | 2023.07.13 |
[백준/Python] (S4) 17218 - 비밀번호 만들기 (0) | 2023.07.08 |