<aside>
💬 lv0
, 데이터 구조
사용자의 요청을 순서대로 기록하고 관리하는 큐를 구현해주세요. 큐의 크기는 제한되어 있으며, 큐가 가득 찬 경우 가장 오래된 요청을 제거한 후 새 요청을 추가해야 합니다.
예를 들어, 큐의 크기가 3이고, 순서대로 A
, B
, C
, D
요청이 들어온다면, D
가 들어올 때 A
는 제거되고, 큐에는 [B, C, D]
가 남게 됩니다.
크기 | 입력 (요청) | 출력 (큐의 상태) |
---|---|---|
3 | ['A', 'B', 'C', 'D'] | ['B', 'C', 'D'] |
2 | ['X', 'Y', 'Z'] | ['Y', 'Z'] |
1 | ['P', 'Q', 'R'] | ['R'] |
주어진 크기의 큐를 유지하면서, 새로운 요청이 들어올 때마다 오래된 요청을 제거하고 새 요청을 추가합니다.
</aside>
collections
모듈의 deque
자료구조from collections import deque
def solution(data):
size = data["size"] **#1 입력 데이터 처리**
requests = data["requests"]
queue = deque(maxlen=size) **#2 제한된 크기의 큐 초기화**
for request in requests: **#3 요청 처리 및 큐에 추가**
queue.append(request)
return list(queue) **#4 최종 큐 상태 반환**
입력 데이터 처리
입력으로 주어진 data
딕셔너리에서 큐의 크기(size
)와 요청 목록(requests
)을 추출합니다.
제한된 크기의 큐 초기화
collections
모듈의 deque
자료구조를 사용하여 제한된 크기(size
)의 큐를 초기화합니다. 이 큐는 요청을 순서대로 저장하는 데 사용됩니다.
요청 처리 및 큐에 추가
주어진 요청 목록(requests
)을 순회하면서, 각 요청을 큐에 추가합니다. 큐의 크기가 maxlen
에 도달하면, 새 요청이 추가될 때 자동으로 가장 오래된 요청이 제거됩니다.
최종 큐 상태 반환
모든 요청을 처리한 후, 큐에 남아 있는 요청들을 리스트로 변환하여 반환합니다. 이 리스트는 가장 최근의 size
요청을 포함합니다.
데큐(Deque)
기본 형태: from collections import deque
개념: deque
는 양방향 큐로, 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 자료구조입니다. collections
모듈에서 제공됩니다.
from collections import deque
dq = deque([1, 2, 3]) # deque 생성
dq.append(4) # dq의 맨 뒤에 4 추가 # deque([1, 2, 3, 4])
dq.appendleft(0) # dq의 맨 앞에 0 추가 # deque([0, 1, 2, 3, 4])
dq.pop() # dq의 맨 뒤 제거 및 반환 # deque([0, 1, 2, 3])
dq.popleft() # dq의 맨 앞 제거 및 반환 # deque([1, 2, 3])
def solution(data):
size = data['size'] **#1 입력 데이터 처리**
requests = data['requests']
return requests[-(size):] **#2 최신 요청 선택**
입력 데이터 처리
입력으로 주어진 data
딕셔너리에서 큐의 크기(size
)와 요청 목록(requests
)을 추출합니다.
최신 요청 선택
큐의 크기에 맞게, 요청 목록의 마지막 부분을 슬라이싱하여 최신 요청만을 선택합니다. 큐가 가득 찬 경우, 이 로직은 자동으로 가장 오래된 요청을 제외하고 최신 요청만을 남깁니다.
Queue (큐)