K
KRYFT Problem Bank
백엔드 보통 코딩

LRU 캐시 구현

Least Recently Used 캐시를 구현하세요

30분
100점
120개 테스트케이스
#3666

문제 설명

LRU(Least Recently Used) 캐시를 구현하세요.

동작 방식

  • 용량(capacity)이 정해진 캐시
  • get(key): 키가 있으면 값 반환, 없으면 -1
  • put(key, value): 키-값 저장, 용량 초과시 가장 오래된 항목 제거
  • get, put 모두 O(1) 시간 복잡도

힌트

해시맵 + 이중 연결 리스트 조합 사용

예제

cache = LRUCache(2)
cache.put(1, 1)
cache.put(2, 2)
cache.get(1)       // 1 반환
cache.put(3, 3)    // 2 제거됨 (가장 오래된)
cache.get(2)       // -1 반환

예제 테스트케이스

예제 1
입력
8
39 -201 311 734 -583 -202 957 -227
출력
828
예제 2
입력
6
114 -84 737 -388 19 898
출력
1296
예제 3
입력
28
-986 -173 17 -547 -409 -522 477 14 937 749 102 -508 -116 -585 256 -225 -534 487 -982 -570 -142 -872 457 -964 -23 -209 -437 933
출력
-4375

힌트

실행 버튼을 눌러 코드를 실행하세요.