Programmers / 2단계 / 캐시 / python

2024. 2. 13. 13:55·코딩테스트/programmers (python)

 

코딩테스트 연습 - [1차] 캐시 | 프로그래머스 스쿨 (programmers.co.kr)

 

 

나의 풀이 

.

 

 

모범 답안

def solution(cacheSize, cities):
    cache = []
    time = 0
    for city in cities:
        city = city.lower()
        if cacheSize:
            if not city in cache:
                if len(cache) == cacheSize:
                    cache.pop(0)
                cache.append(city)
                time += 5
            else:
                cache.pop(cache.index(city))
                cache.append(city)
                time += 1
        else:
            time += 5
    return time

 

LRU : 가장 오랫동안 참조되지 않은 페이지를 교체

LRU 예시) 캐시크기: 2, 도시이름: [Jeju, Pangyo, NewYork, newyork]
  1. Jeju가 들어온 경우, 참조리스트에 아무것도 없으므로 +5를 하고 buffer에 Jeju 삽입
    • buffer = ['Jeju'] , answer = 5
  2. Pangyo가 들어온 경우, 참조리스트에 Jeju가 있으나 Pangyo가 아니므로 +5를 하고 Pangyo를 삽입
    • buffer = ['Jeju', 'Pangyo'], answer = 10
  3. NewYork가 들어온 경우, 참조리스트에 NewYork가 없으므로 +5를 하고 참조리스트가 캐시크기 2보다 크므로 가장 오래전에 참조된 Jeju를 삭제하고 NewYork를 삽입
    • buffer = ['Pangyo', 'NewYork'], answer = 15
  4. newyork가 들어온 경우, 참조리스트에 NewYork가 있으므로 +1를 하고 기존의 NewYork의 우선순위를 가장 높은 순서로 변경(리스트의 맨 마지막, 위의 경우는 이미 가장 높은 참조순위이므로 순서의 변경이 없음)
    • buffer = ['Pangyo', 'NewYork'], answer = 16

출처: https://eda-ai-lab.tistory.com/503 [TEAM EDA:티스토리]

 

 

 

LRU 알고리즘 개념

강생강의 하루 :: [Python] LRU(Least Recently Used) 알고리즘 (tistory.com)

 

[Python] LRU(Least Recently Used) 알고리즘

페이지 교체 알고리즘 페이지 부재가 발생 하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다. 이 알고리즘이 사용되는 시기는 페이지 부재

gingerkang.tistory.com

 

'코딩테스트 > programmers (python)' 카테고리의 다른 글

Programmers / 2단계 / 모음사전 / python  (1) 2024.02.13
Programmers / 2단계 / 타겟 넘버 / python  (1) 2024.02.13
Programmers / 2단계 / 의상 / python  (0) 2024.02.09
Programmers / 2단계 / 가장 큰 수 / python  (0) 2024.02.08
Programmers / 2단계 / 행렬의 곱셈 / python  (1) 2024.02.08
'코딩테스트/programmers (python)' 카테고리의 다른 글
  • Programmers / 2단계 / 모음사전 / python
  • Programmers / 2단계 / 타겟 넘버 / python
  • Programmers / 2단계 / 의상 / python
  • Programmers / 2단계 / 가장 큰 수 / python
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (320) N
      • 코딩테스트 (221) N
        • programmers (python) (155)
        • 백준 (python) (64) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (18) N
        • Python (4)
        • Java | Spring (6)
        • Unity (3)
        • API (3)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    박스플롯
    백엔드 개발자
    2 x n 타일링
    solving environment
    Python
    Boxplot
    모델 성능 평가
    파이썬
    train_test_split
    티스토리챌린지
    백엔드 개발자 역량
    카카오맵
    그리디 알고리즘
    바다코끼리
    야근 지수
    프렌즈4블록
    API
    카카오맵 api
    오차행렬
    Greedy
    백엔드
    대입 표현식
    프로그래머스
    asterisk
    코딩테스트
    데이터분석
    웹크롤링
    kakao map api
    confusion matrix
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
Programmers / 2단계 / 캐시 / python
상단으로

티스토리툴바