[BOJ] 백준 5430 AC

태환·2024년 2월 9일
0

Coding Test

목록 보기
62/151
post-custom-banner

📌 [BOJ] 백준 5430 AC

📖 문제

📖 예제

📖 풀이

from collections import deque
import sys

T = int(input())

for _ in range(T):
  p = sys.stdin.readline().strip()
  n = int(sys.stdin.readline())
  array = sys.stdin.readline().strip()
  queue = deque(array[1:-1].split(','))

  cnt = 0
  Is = True
  
  if n == 0:
    queue = deque()
    
  for i in p:
    if i == 'R':
      cnt += 1
    else:
      if queue:
        if cnt % 2 != 0:
          queue.pop()
        else:
          queue.popleft()
      else:
        Is = False
        break
        
  if not Is:
    print('error')
  else:
    if cnt % 2 != 0:
      queue.reverse()
      print('['+(',').join(queue)+']')
    else:
      print('['+(',').join(queue)+']')

R 이 짝수번 나올 경우 배열은 본래의 순서를 지닌다는 것을 인지하고 다음 두 경우에 대해서 고려해주면 된다.
1. D가 나왔을 경우 지금까지 R이 홀수 번만큼 나왔다면 뒤집을 것을 고려하여 맨 뒤의 요소를 제거해야 한다. 짝수 번일 경우 본래의 순서를 지니기에 가장 앞에 요소를 제거하면 된다.
2. 본 문제에서 R은 그때마다 처리하는 것이 아닌 마지막에 한번 지금까지 나온 R의 횟수를 고려하여 처리해준다. 만약 R이 홀수 번만큼 나왔을 경우 reverse()를 이용해 뒤집어준 후 출력하면 된다. 짝수 번일 경우 본래의 배열 그대로 출력하면 된다.

profile
연세대학교 컴퓨터과학과 석사 과정
post-custom-banner

0개의 댓글