[BOJ] 백준 1439 뒤집기

태환·2024년 2월 5일
0

Coding Test

목록 보기
52/151

📌 [BOJ] 백준 1439 뒤집기

📖 문제

📖 예제

📖 풀이

from collections import deque
import sys

T = int(input())
for _ in range(T):
  p = list(sys.stdin.readline().strip())
  n = int(sys.stdin.readline())
  array = sys.stdin.readline().strip()
  queue = deque(array[1:-1].split(','))
  
  if n == 0:
    queue = deque()
    
  else:
    cnt  = 0
    Is = True
    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:
        print('['+','.join(queue)+']')
      else:
        queue.reverse()
        print('['+','.join(queue)+']')

'R'에 대해서는 마지막에 한번 수행해주면 된다.
만약 'R'이 짝수번 만큼 나와 두 번 뒤집어야 할 경우 배열은 본래의 모양을 가질 것이다.
그렇기 때문에 'R'이 총 홀수번 나온 경우에만 마지막에 reverse 함수를 활용하면 된다.
다만 'D'를 처리할 때 R이 나온 수를 계속 체크해가며 홀수번 나왔을 경우 뒤에서 제거하고 짝수번 나왔을 경우 앞에서 제거해야하기 때문에 자료 구조 queue를 활용한다.

profile
연세대학교 컴퓨터과학과 석사 과정

0개의 댓글