728x90
< 33%에서 실패 >
1. reverse 의 개수를 센 후 홀수일 때만 마지막에 reverse 해주면 된다.
2. reverse 개수에 따라 popleft 를 할지 pop을 할지 정하면 된다.
import sys
a = int(input())
def R(k):
answer = [ ]
for i in range(0,len(k)):
answer.append(k[len(k)-i-1])
return answer
def D(k):
if len(k)==0:
return False
else:
k = k[1:len(k)]
return k
def check(order,k):
for i in range(0,len(order)):
if order[i]=='D':
if D(k)==False:
return False
else:
k = D(k)
return k
for i in range(0,a):
order = list(input())
use = int(input())
k = input().rsplit()
if use<=0:
print('error')
else:
k_copy = list(k)
k=k.split(",")
k[0]=k_copy[1]
k[-1]=k_copy[-2]
for i in range(0,len(k)):
k[i] = int(k[i])
if check(order,k) == False:
print('error')
else:
if order.count('R')%2!=0:
print(R(check(order,k)))
else:
print((check(order,k)))
< 정답 코드 >
import sys
from collections import deque
t = int(input())
for i in range(t):
p = sys.stdin.readline().rstrip()
n = int(input())
arr = sys.stdin.readline().rstrip()[1:-1].split(",")
queue = deque(arr)
rev, front, back = 0, 0, len(queue)-1
flag = 0
if n == 0:
queue = []
front = 0
back = 0
for j in p:
if j == 'R':
rev += 1
elif j == 'D':
if len(queue) < 1:
flag = 1
print("error")
break
else:
if rev % 2 == 0:
queue.popleft()
else:
queue.pop()
if flag == 0:
if rev % 2 == 0:
print("[" + ",".join(queue) + "]")
else:
queue.reverse()
print("[" + ",".join(queue) + "]")728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 1874 스택 수열 (0) | 2022.10.03 |
|---|---|
| [파이썬] 백준 2740 행렬 곱셈 (0) | 2022.10.01 |
| [파이썬] 백준 1920 수 찾기 (1) | 2022.10.01 |
| [파이썬] 백준 11866 요세푸스 문제 0 (0) | 2022.09.27 |
| [파이썬] 백준 10866 덱 (1) | 2022.09.22 |