백준 구현 대비 AC

yjkim·2023년 7월 2일
0

알고리즘

목록 보기
20/59

문제:https://www.acmicpc.net/problem/3190

접근

처음에는 단순히 R들어오면 reverse, D들어오면 pop(0)을 해주었음, 이런문제는 보통 deque를 사용하면 수월하게 풀 수 있지만 리스트를 사용해도 가능할거 같아서 그냥 리스트만 활용하여 문제를 풀어주었음

결과는 당연히 시간초과.

reverse함수를 R이 들어올때마다 호출하게 되면 시간복잡도가 어마어마하게 늘어난다. 이를 해결하려면 n변수를 잘 활용해 주어야함. isreverse 변수와 연계하여 뒤집어졌을때 포인터는 n-1, 뒤집어지지 않았을때 포인터는 0을 향하게 하여 reverse 계산.

answer=[]

T=int(input())
for i in range(T):   #100
  error=False
  isreverse=False
  p=input()
  start=0
  n=int(input())   # n은 왜있는걸까
  lst=input()
  lst=lst[1:len(lst)-1]
  if n!=0:
    lst=list(map(int, lst.split(',')))
  else:
    lst=[]
  
  for f in p:
    if f=='R':
      if isreverse:
        isreverse=False
        start=0
      else:
        isreverse=True
        start=n-1
    else:
      if n<=0:
        error=True
        break
      else:
        if isreverse:
          lst.pop(start)
          start-=1
          n-=1
        else:
          lst.pop(start)
          n-=1

  if error:
    answer.append('error')
  else:
    if isreverse:
      lst.reverse()
    answer.append(lst)
  

for a in answer:
  print(a)
profile
컴퓨터 공부 / 백엔드 개발

0개의 댓글