[백준 알고리즘] 5430번 AC, 파이썬(python)
글 작성자: 망고좋아
반응형
5430, AC
📁 문제 출처
💡 생각
- 일단 문제 그대로 하나씩 풀어나갔지만 시간 초과가 발생했다.
시간 초과 코드
t = int(input())
for i in range(t):
p = input()
n = int(input())
arr = list(map(int,input()[1:-1].replace(',', '')))
for i in p:
if i == 'R':
arr = arr[::-1]
elif i == "D":
if len(arr) == 0:
break
else:
arr.pop(0)
if arr == []:
print('error')
else:
print(arr)
deque 사용 - 시간 초과
from collections import deque
t = int(input())
for i in range(t):
p = input()
n = int(input())
arr = deque( map(int, input()[1:-1].replace(',', '')))
for i in p:
if i == 'R':
arr.reverse()
elif i == "D":
if len(arr) == 0:
break
else:
arr.popleft()
if len(arr) == 0:
print('error')
else:
print(list(arr))
- 찾아보니 R이 들어올 때마다 reverse하면 무조건 시간 초과
- flag를 사용해서 뒤집기 여부를 확인하여 마지막 한 번만 실행
🛠 나의 코드
from collections import deque
t = int(input())
for i in range(t):
p = input()
n = int(input())
arr = input()[1:-1].split(',')
queue = deque(arr)
flag = 0
if n == 0:
queue = []
for j in p:
if j == 'R':
flag += 1
elif j == 'D':
if len(queue) == 0:
print("error")
break
else:
if flag % 2 == 0:
queue.popleft()
else:
queue.pop()
else:
if flag % 2 == 0:
print("[" + ",".join(queue) + "]")
else:
queue.reverse()
print("[" + ",".join(queue) + "]")
✔️ 배운 점 및 주의할 점
- 빈 배열 []이 들어올 수 있다. 따라서 n == 0일 때 빈 배열로 초기화를 해줘야 한다.
📌 참고한 코드
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 4949번 균형잡힌 세상, 파이썬(python) (0) | 2021.08.11 |
---|---|
[백준 알고리즘] 1021번 회전하는 큐, 파이썬(python) (0) | 2021.08.11 |
[백준 알고리즘] 2164번 카드2, 파이썬(python) (0) | 2021.08.10 |
[백준 알고리즘] 18258번 큐 2, 파이썬(python) (0) | 2021.08.10 |
[백준 알고리즘] 6198번 옥상 정원 꾸미기, 파이썬(python) (2) | 2021.08.10 |
댓글
이 글 공유하기
다른 글
-
[백준 알고리즘] 4949번 균형잡힌 세상, 파이썬(python)
[백준 알고리즘] 4949번 균형잡힌 세상, 파이썬(python)
2021.08.11 -
[백준 알고리즘] 1021번 회전하는 큐, 파이썬(python)
[백준 알고리즘] 1021번 회전하는 큐, 파이썬(python)
2021.08.11 -
[백준 알고리즘] 2164번 카드2, 파이썬(python)
[백준 알고리즘] 2164번 카드2, 파이썬(python)
2021.08.10 -
[백준 알고리즘] 18258번 큐 2, 파이썬(python)
[백준 알고리즘] 18258번 큐 2, 파이썬(python)
2021.08.10