728x90
반응형
https://www.acmicpc.net/problem/5430
deque를 사용하여 뒤집기를 잘 구현한는게 핵심인듯한 문제
뭐 접근방법은 딱히 없고 구현을 빡세게 했다.
열심히 짯는데... 도대체 왜 시간초과인것인가..
from collections import deque
n = int(input())
for _ in range(n):
com = input()
k = int(input())
arr = input()
arr = arr[1:-1]
if arr:
arr = list(map(int, arr.split(",")))
dq = deque(arr)
for j in range(len(com)):
if com[j] == 'R':
tmp = deque()
while dq:
tmp.append(dq.pop())
dq = tmp
elif com[j] == 'D':
if dq:
dq.popleft()
else:
print("error")
break
if dq:
print('[', end="")
for k in dq:
if k != dq[-1]:
print(k, end=",")
else:
print(k, end="")
print(']')
피눈물을 머금고 다시한번 생각하고 있다..
도저히 안되겠어서 찾아본결과 난 소름이 돋았다..ㅋㅋ Reverse는 사실 맨 마지막에 해줘도 된다는 사실을..
단지 pop을 왼쪽에서하고, 오른쪽에서 하고 그 후 맨 마지막에 R이 짝수개이면 그대로 출력 아니면 그때 한번만 뒤집으면 해결되는 문제였다..
from collections import deque
n = int(input())
for _ in range(n):
com = input()
k = int(input())
arr = input()
arr = arr[1:-1]
if arr:
arr = list(arr.split(","))
dq = deque(arr)
if k == 0:
dq = deque()
flag = 1
R = 0
for j in range(len(com)):
if com[j] == 'R':
R +=1
elif com[j] == 'D':
if dq:
if R % 2 == 0:
dq.popleft()
else:
dq.pop()
else:
print("error")
flag = 0
break
if flag == 0:
continue
else:
if R % 2 == 0:
print('[' + ",".join(dq) + ']')
else:
dq.reverse()
print('[' + ",".join(dq) + ']')
찾아보다가 join도 편한거같다^.^ d
다른사람 코드 참조해서 겨우 풀었다..
** 뒤집는건 꼭 처음에 해야하는지 생각해보자**
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준] 2910번: 빈도 정렬 - python (0) | 2024.03.21 |
---|---|
[백준] 1003번: 피보나치 함수 - python (0) | 2024.03.20 |
자연어처리 - cos유사도, Word2Vec, Doc2Vec (3) | 2024.03.20 |
[백준] 11652번: 카드 - python (0) | 2024.03.19 |
[백준] 5648번: 역원소 정렬 - python (0) | 2024.03.19 |