모르지 않다는 것은 아는것과 다르다.

알고리즘

백준 5430번

채마스 2022. 2. 26. 00:58

접근 방식(알고리즘 분류)

  • 문자열

내 풀이

from collections import deque
testcase = int(input())

answer = []
for _ in range(testcase):
    s = input()
    n = int(input())
    temp = input()
    temp2 = temp.split(",")

    if len(temp2) == 1:
        if temp2[0][1] == "]":
            temp2 = [] 
        else:
            temp2 = [temp2[0][1:-1]]
    else:
        temp2[0] = temp2[0][1:]
        temp2[-1] = temp2[-1][:-1]

    number = deque([i for i in temp2])
    flag = 0

    check = False
    for i in s:
        if i == "R":
            flag += 1
        else:
            if len(number) == 0:
                answer.append("error")
                check = True
                break

            if flag%2 == 0:
                number.popleft()
            else:
                number.pop()

    if check:
        continue
    if flag%2 == 0:
        result = [i for i in number]
    else:
        result = []
        for i in range(len(number)-1, -1, -1):
            result.append(number[i])
    result = "[" + ",".join(result) + "]"
    answer.append(result)

for i in answer:
    print(i)

풀이 설명

  • deque로 문제에 접근했다.
  • R이 나왔을때 실제로 배열을 뒤집지 않고, flag로 처리했다 --> 시간, 공간 효율을 위해
  • 문자열 slicing 과 join함수만 잘쓰면 쉽게 풀 수 있는 문제였다.
  • join을 할때 배열의 인자가 int 형이면 안된다. (당연한건데..)

'알고리즘' 카테고리의 다른 글

백준 18352번  (0) 2022.02.26
백준 8983번  (0) 2022.02.26
백준 2533번  (0) 2022.02.26
백준 1786번  (0) 2022.02.26
백준 1701번  (0) 2022.02.26