728x90
반응형
https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
정답 code
#AC
from collections import deque
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
p = input()
n = int(input())
arr = input().rstrip()[1:-1].split(',') #괄호 제외하고 [1~-1]까지 ','제외 입력
arr = deque(arr)
r = 0 #reverse 횟수 계산
if n == 0:
arr = []
for i in range(len(p)):
if p[i] == 'R':
r += 1 #매번 뒤집으면 시간초과 됨으로 r = 홀수일경우만 한번에 revers
elif p[i] == 'D':
if len(arr) == 0:
print('error')
break
else:
if r % 2 == 0:
arr.popleft()
else:
arr.pop() #뒤집기 전이니 뒤에서빼주면 같은 효과
else:
if r % 2== 0: #r = 짝수인 경우 뒤집을 필요 x
print('['+",".join(arr)+"]")
else: # r = 홀수인 경우 한번만 뒤집기
arr.reverse() #deque는 sort사용불가 하지만 reverse사용 가능
print('['+",".join(arr)+"]")
solution
처음 코드는 R이 입력되면 바로바로reverse를 해주었는데 이는 시간초과의 원인이 되었다.
R이 무수히 반복되는 경우에 짝수만큼 반복하면 결국 원래의 형태와 같고
무수히 반복되도 홀수면 한번만 reverse하면 되기에 r변수를 통해 R입력갯수를 센후 결과에 따라 뒤집거나 그대로 두는게 포인트다.
이것 말고도 몇가지 포인트가있는데 배열 입력시 괄호와 콤마가 함께 입력되는걸 받아야 하는것이다.
이를 받기위해 [1:-1]을 사용하여 앞 뒤 괄호를 제외한 입력을 받고, split(',')을 통해 콤마로 구분해 입력 받는다.
또 join을 사용해 출력 형태를 맞추어 주는것도 잊지 말아야한다.
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 6063번 : 카잉 달력 (by python 파이썬) 자세한 설명 (0) | 2022.06.25 |
---|---|
[baekjoon] 백준 5525번 : IOIO (by python 파이썬) (0) | 2022.06.24 |
[baekjoon] 백준 2667번 : 단지번호붙이기 (by python 파이썬) bfs (0) | 2022.06.18 |
[baekjoon] 백준 11726번 : 2*n 타일링 (by python) 다이나믹프로그래밍 (0) | 2022.06.15 |
[baekjoon] 백준 11724번 : 연결 요소의 개수 (by python) dfs,bfs (0) | 2022.06.14 |