[백준] AC 5430번

나의 풀이

T = int(input())

for i in range(T):
    function = input()
    n = int(input())
    nums = input()[1:-1].split(",")

    rev, d_count = 0, function.count("D")
    if d_count > n:
        print("error")
        continue
    for j in list(function):
        if j == "R":
            rev += 1
            continue
        elif j == "D":
            if rev % 2 == 1:
                nums.pop(-1)
                d_count -= 1
            else:
                nums.pop(0)
                d_count -= 1

    if rev % 2 == 1:
        nums.reverse()
    if len(nums) != 0:
        print("[" + ",".join(nums) + "]")
    else:
        print("[]")
  • T번을 반복한다.
  • 함수, 숫자의 개수, 정수를 받아준다.
  • 정수는 [10, 20] 형태로 입력되기 때문에 맨 앞과 맨 뒤([,]) 를 잘라주고, ',' 를 기준으로 나눠준다.
  • R이 몇 번 반복되는지 체크할 rev 변수를 생성하고, D가 몇 번 들어가는지 체크하기위해 d_count 변수도 생성해준다.
  • 우선 함수를 체크하기 전에 d_count 가 숫자의 개수(n) 보다 많으면 에러를 출력하고 다음 단계로 넘어간다.
  • 함수의 문자열을 돌면서 R 일 경우에 rev 를 1 추가해주고 스킵한다. 만약 D 일 rev 를 체크해서 짝수면 앞에서, 홀수면 뒤에서부터 숫자를 빼준다.
  • 반복문을 나와서 rev 가 홀수이면 뒤집어준다.
  • 만약 nums 의 사이즈가 0 아니면 괄호를 넣어 출력해주고, 0이라면 [] 를 출력해준다.

0개의 댓글