반응형
✔️알고리즘
- 구현
- 자료구조
- 큐
✔️접근방법
1. 덱을 사용해 반복할때마다 3번째 요소가 가장 앞에 오도록 rotation해준 후, pop 해준다.
from collections import deque
N, K = map(int, input().split())
deq = deque() # deque객체 생성
for i in range(N): # deque에 1~N까지 삽입
deq.append(i+1)
for i in range(N):
deq.rotate(-(K-1)) #3번째 요소가 가장 앞에 오도록 rotation
if (i == 0):
print('<',end="")
print(deq.popleft(),end="")
if (i == N-1):
print('>')
break
print(', ',end="")
✔️배운점/어려운점
1. 부끄럽지만 여태 원형큐 구현 방법을 습득하지 못해 다시 공부했다.
<원형큐 규칙>
1) front == rear 면 empty
2) (rear+1) % (큐 크기) == front
3) 원형큐의 한 공간은 빈다
* '큐' 자료구조 공부
2. 파이썬 데크(deque) 자료구조를 공부했다.
<덱(deque)>
1) 앞, 뒤 양방향으로 요소를 추가하거나 삭제할 수 있다.
2) 일반적인 리스트는 연산에 O(n)가 소모되지만 덱의 경우 O(1)의 시간이 소모된다.
3) 덱 메소드에는 append(item), appendleft(item), pop(), popleft(), remove(item),
rotate(num)(num이 음수면 왼쪽으로 이동, 양수면 오른쪽으로 이동),
extend(array), extendleft(array) (주어진 배열을 순환하면서 덱에 요소 추가)
반응형
'알고리즘 > 백준(BOJ) 문제 풀이' 카테고리의 다른 글
[Python]백준 #2468 안전영역 (DFS, BFS) (0) | 2023.02.16 |
---|---|
[Python]백준 #2178 미로 탐색 (DFS, BFS) (0) | 2023.02.10 |
[Python]백준 #1018 체스판 다시 칠하기 (0) | 2022.07.03 |
[Python]백준 #1259 팰린드롬수(class2+) (0) | 2022.03.13 |
[Python]백준 #11050 이항계수1(class2+) (0) | 2022.03.12 |