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 해줬어요
이 문제 조심할게 출력내용 보면 배열 안에 요소들이 ,으로 따닥따닥 붙어있어서
배열 그냥 출력하면 안 되고 문자열로 따로 해줘야해요
'BOJ' 카테고리의 다른 글
[python]백준 1234번 - 크리스마스 트리 (0) | 2023.08.23 |
---|---|
[python]백준 1208번 - 부분수열의 합 2 (0) | 2023.08.22 |
[python] 백준 4195번 - 친구 네트워크 (0) | 2023.08.20 |
[python]백준 5052번 - 전화번호 목록 (0) | 2023.08.19 |
[python]백준 1107번 - 리모컨 (0) | 2023.08.18 |
댓글