BOJ
[python]백준 5430번 - AC
yujinkimkim
2023. 8. 21. 14:34
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
import ast
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
for _ in range(n):
arr = input()
m = int(input())
tmp = ast.literal_eval(input())
arr2 = deque(tmp)
flag = True
reverse_count = 0
for i in arr:
if i == 'D':
if len(arr2) == 0:
flag = False
break
if reverse_count % 2 == 0:
arr2.popleft()
else:
arr2.pop()
elif i == 'R':
reverse_count += 1
if flag:
if reverse_count % 2 == 1:
arr2.reverse()
ans = list(arr2)
print("[",end="")
print(*ans,sep=",",end="")
print("]")
else:
print("error")
import ast
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
for _ in range(n):
arr = input()
m = int(input())
tmp = ast.literal_eval(input())
arr2 = deque(tmp)
flag = True
for i in arr:
if i == 'D':
if len(arr2) == 0:
flag = False
break
arr2.popleft()
elif i == 'R':
arr2.reverse()
if flag:
print(list(arr2))
else:
print("error")
시간초과 나온 코드입니당
import ast
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
for _ in range(n):
arr = input()
m = int(input())
tmp = ast.literal_eval(input())
arr2 = deque(tmp)
flag = True
reverse_count = 0
for i in arr:
if i == 'D':
if len(arr2) == 0:
flag = False
break
if reverse_count % 2 == 0:
arr2.popleft()
else:
arr2.pop()
elif i == 'R':
reverse_count += 1
if flag:
if reverse_count % 2 == 1:
arr2.reverse()
ans = list(arr2)
print("[",end="")
print(*ans,sep=",",end="")
print("]")
else:
print("error")
R이 나올 때마다 계속 reverse를 하는 부분이 문제였어요
R이 나올 때 변수에 1씩 더해서 홀수면 맨뒤 없애고 짝수면 맨앞 없애는 식으로 하고
마지막에 출력할때 홀수면 이때 reverse 해줬어요
이 문제 조심할게 출력내용 보면 배열 안에 요소들이 ,으로 따닥따닥 붙어있어서
배열 그냥 출력하면 안 되고 문자열로 따로 해줘야해요