코테 준비/구현

[백준] 5430. AC (다시 풀어보기)

imsmile2000 2023. 1. 27. 03:31

첫번째 시도 (시간초과) - reverse를 매번 해줘서 타임아웃

from collections import deque
import sys
t=int(sys.stdin.readline())
for i in range(t):
  p=sys.stdin.readline()
  n=int(sys.stdin.readline())
  x=deque(sys.stdin.readline().rstrip()[1:-1].split(','))
  for i in range(n):
    x[i]=int(x[i])
  if n==0:
    print('error')
  else:
    for j in p:
      if j=='R':
        x.reverse()
      elif j=='D':
        if x:
          x.popleft()
        else:
          print("error")
    print(list(x))

두번째 시도 (틀림) - 1, R ,0, [] 일때 틀림

from collections import deque
import sys
t=int(sys.stdin.readline())
for i in range(t):
  p=sys.stdin.readline()
  n=int(sys.stdin.readline())
  x=deque(sys.stdin.readline().rstrip()[1:-1].split(','))
  if n==0:
    print('error')
  else:
    count=0
    for j in p:
      if j=='R':
        count+=1
      elif j=='D':
        if x:
          if count%2==0:
            x.popleft()
          else:
            x.pop()
        else:
          print("error")
    if count%2==0:
      print("["+",".join(x)+"]")
    else:
      x.reverse()
      print("["+",".join(x)+"]")

세번째 시도 (정답) - flag를 사용해서 error를 출력하면 리스트는 출력 안하도록 해야함

from collections import deque
import sys
t=int(sys.stdin.readline())
for i in range(t):
  p=sys.stdin.readline().rstrip()
  n=int(sys.stdin.readline())
  x=deque(sys.stdin.readline().rstrip()[1:-1].split(','))
  count=0
  flag=0
  if n==0:
    x=[]
  for j in p:
    if j=='R':
      count+=1
    elif j=='D':
      if x:
        if count%2==0:
          x.popleft()
        else:
          x.pop()
      else:
        print("error")
        flag=-1
        break
  if flag==0:
    if count%2==0:
      print("["+",".join(x)+"]")
    else:
      x.reverse()
      print("["+",".join(x)+"]")