새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[프로그래머스] 캐시

by 언호 2022. 3. 15.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

문제에서 제시한 LRU 알고리즘을 이용하여 풀이하였습니다.

2) 알고리즘

  • LRU (Least Recently Used)

3) 풀이 코드

사용 언어 - Python

from collections import deque

def solution(cacheSize, cities):
    answer = 0                          # 정답 변수
    q = deque()                         # 캐시 공간

    if not cacheSize:                   # 캐시 사이즈가 0인 경우, 입력마다 항상 5초가 소요 됨
        return len(cities) * 5

    for city in cities: 
        city = str(city).lower()        # 대소문자 구분을 안함
        if city not in q:               # 현재 도시가 캐시 공간에 저장되어 있지 않으면
            if len(q) >= cacheSize:     # 캐시 공간이 꽉 차있으면 가장 사용안한 입력 제거
                q.popleft()
            q.append(city)              # 새로운 입력 추가
            answer += 5                 # 5초 증가
        else:
            q.remove(city)              # 캐시 공간에 이미 저장되어 있다면, 기존에 저장된 위치 제거
            q.append(city)              # 가장 최근 입력으로 다시 추가
            answer += 1                 # 1초 증가

    return answer

📝 결과 및 학습한 내용

1) 어려웠던 내용

LRU 알고리즘을 모르고 있어서 어려움을 겪었습니다.

2) 새롭게 학습한 내용

LRU 알고리즘을 새롭게 학습하였습니다.


🔗 문제 링크

- https://programmers.co.kr/learn/courses/30/lessons/17680

 

코딩테스트 연습 - [1차] 캐시

3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro

programmers.co.kr

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > Python' 카테고리의 다른 글

[프로그래머스] 삼각 달팽이  (0) 2022.03.16
[프로그래머스] 구명보트  (0) 2022.03.16
[프로그래머스] 양궁대회  (0) 2022.03.14
[백준] 2644 촌수계산  (0) 2022.03.13
[백준] 1051 숫자 정사각형  (0) 2022.03.11

댓글