[백준] 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이라면 [] 를 출력해준다.