<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>

😺 풀이 1. 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 최종 큐 상태 반환**

단계별 풀이 전략

  1. 입력 데이터 처리

    입력으로 주어진 data 딕셔너리에서 큐의 크기(size)와 요청 목록(requests)을 추출합니다.

  2. 제한된 크기의 큐 초기화

    collections 모듈의 deque 자료구조를 사용하여 제한된 크기(size)의 큐를 초기화합니다. 이 큐는 요청을 순서대로 저장하는 데 사용됩니다.

  3. 요청 처리 및 큐에 추가

    주어진 요청 목록(requests)을 순회하면서, 각 요청을 큐에 추가합니다. 큐의 크기가 maxlen에 도달하면, 새 요청이 추가될 때 자동으로 가장 오래된 요청이 제거됩니다.

  4. 최종 큐 상태 반환

    모든 요청을 처리한 후, 큐에 남아 있는 요청들을 리스트로 변환하여 반환합니다. 이 리스트는 가장 최근의 size 요청을 포함합니다.

알아둬야 할 개념

데큐(Deque)

풀이 2. 큐(Queue)

def solution(data):
    size = data['size'] **#1 입력 데이터 처리**
    requests = data['requests']

    return requests[-(size):] **#2 최신 요청 선택**

단계별 풀이 전략

  1. 입력 데이터 처리

    입력으로 주어진 data 딕셔너리에서 큐의 크기(size)와 요청 목록(requests)을 추출합니다.

  2. 최신 요청 선택

    큐의 크기에 맞게, 요청 목록의 마지막 부분을 슬라이싱하여 최신 요청만을 선택합니다. 큐가 가득 찬 경우, 이 로직은 자동으로 가장 오래된 요청을 제외하고 최신 요청만을 남깁니다.

알아둬야 할 개념

Queue (큐)