5430번 AC
구현
골드 V
💡문제 분석 요약
구현
💡알고리즘 설계
함수 명령어는 list로 만들어 하나씩 돌면서 수행한다.
numbers는 list로 만들어 주기 위해 앞 뒤의 괄호를 제거하고 (replace로 대체) 만약 제거하니 아무것도 안남으면 [] split이 불가하므로 빈 리스트를 할당한다.
R인 경우, 실제로 뒤집는게 아닌 뒤집힌 횟수를 센다.
횟수를 기반으로 뒤집은 횟수가 짝수면 원래 리스트의 앞에서 빼므로 del number[0]으로 앞의 값을 빼준다. 이때, pop으로 하면 시간초과가 나므로 del로 접근한다.
만약, 뒤집은 횟수가 홀수면 뒤집혔으므로 뒤에 숫자를 빼준다.
출력할 때, 뒤집힌 수의 짝홀로 뒤집혀서 출력할지 말지를 결정한다.
💡코드
import sys
input= sys.stdin.readline
t = int(input())
for _ in range(t):
isError = False
reverse = 0
p = list(input().strip())
n = int(input())
numbers = input().strip()
numbers =numbers.replace('[','')
numbers= numbers.replace(']','')
if numbers=='':
numbers = []
else:
numbers = list(map(int,numbers.split(',')))
for func in p:
if func=='R':
reverse +=1
else:
if numbers:
if reverse%2==0:
del numbers[0]
else:
numbers.pop(-1)
else:
print('error')
isError =True
break
if not isError:
if reverse%2==1:
numbers = numbers[::-1]
print('[',end='')
print(*numbers,sep=',',end=']\n')
else:
print('[',end='')
print(*numbers,sep=',',end=']\n')
💡오류 난 이유
- reverse에서 실제로 reverse를 하니 시간 초과가 났다.
- 출력 형식을 맞추지 못했다.
💡 기억할 것
- 출력 형식을 제대로 파악하자.
- 문제 그대로 뒤집거나 바꾸려고 하지 말고 다른 방법이 없는지 고민하자. 특히 reverse나 pop같은 경우.