본문 바로가기
코딩/백준

알고리즘 - Python / 백준 - 5430번 : AC

반응형

5430번: AC (acmicpc.net)

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

 


풀이

  • R이 2개 붙으면 한바퀴 도는 것이므로 모든 RR을 제거해 계산수를 줄임
  • R과 D의 순서대로 진행해 배열의 앞과 뒤에서 D 연산을 진행하고 남은 결과를 출력한다
  • R은 등장할 떄 마다 side에 -1을 곱해주어 배열을 뒤집는 대신 읽는 순서를 달리하도록 함

 

import sys

n = int(sys.stdin.readline())
for _ in range(n):
  cnt = 1
  side = -1
  move = list(input().replace("RR",""))
  m = int(sys.stdin.readline())
  cha = input()
  chat = cha.replace("[","").replace("]","")
  stack = chat.split(",")
  if m == 0:
    stack = []
  ii = 0
  for i in range(0,len(move)):
    if move[i] == "R":
      side = side * -1
    else:
      if len(stack) == 0:
        print("error")
        cnt = 0
        break
      else:
        if side == -1:
          stack.pop(0)
        else:
          stack.pop()
  if cnt == 1 and side == -1:
    print("[", end="")
    for t in range(0,len(stack)):
      print(stack[t],end="")
      if t != len(stack)-1:
        print(",",end="")
    print("]")
  elif cnt == 1 and side == 1:
    print("[", end="")
    for t in range(len(stack)-1,-1,-1):
      print(stack[t],end="")
      if t != 0:
        print(",",end="")
    print("]")

 

 


 

 

 

반응형