본문 바로가기

Algorithm

5430 AC / 큐

 

핵심

  • 덱을 R이 나올 때마다 뒤집으면 시간 초과가 뜸 -> 길이(N)만큼 걸리기 때문
  • 뒤집힌 상태인지 확인하는 변수를 만들어서 체크하면서 해결해야 함
  • 길이가 0인 리스트가 들어오면 덱을 초기화 시켜줘야 함

문자열 다루기

  • arr = input()[1:-1].split(',') : 입력받은 문자열에서 양옆제외하고 읽어온 후 ,을 기준으로 분리해서 값들을 배열로 저장
  • deq = collections.deque(arr) : 배열 통째로 덱에 추가
  • result = "[" + ",".join(map(str, deq)) + "]" , 을 사용하여 원소사이를 붙여줌
import collections
t = int(input())
ans = []

for _ in range(t):
    ac = input()
    n = int(input())
    arr = input()[1:-1].split(',')

    deq = collections.deque(arr)

    flag = 0 # 뒤집은 상태인지 아닌지 확인하는 변수, 홀수면 뒤집은 것
    err_count = False

    if n == 0: # 길이가 0이라면 빈 덱으로 초기화
        deq = []

    for i in ac:
        if i == "R":
            flag += 1

        if i == "D":
            if len(deq) == 0:
                ans.append("error")
                err_count = True
                break
            else:
                if flag % 2 == 0:
                    deq.popleft()
                else:
                    deq.pop()

    if not err_count:
        if flag % 2 == 0:
            result = "[" + ",".join(map(str, deq)) + "]"
            ans.append(result)
        else:
            deq.reverse()
            result = "[" + ",".join(map(str, deq)) + "]"
            ans.append(result)

for i in ans:
    print(i)

'Algorithm' 카테고리의 다른 글

2606 바이러스 / DFS,BFS  (0) 2025.01.22
크기가 작은 부분 문자열 / 프로그래머스  (0) 2025.01.21
10866 덱 / 큐  (0) 2025.01.17
1966 프린터 큐 / 큐  (0) 2025.01.16
이상한 문자 만들기 / 프로그래머스  (0) 2025.01.15