블로그 이름 뭐로 하지

[알고리즘] 프로그래머스 - [1차] 캐시 본문

알고리즘

[알고리즘] 프로그래머스 - [1차] 캐시

발등이 따뜻한 사람 2023. 12. 30. 17:42

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이

예전에도 이미 풀어놨던 문제이다.

보자마자 알겠지만... 큐를 사용해서 푸는 문제였고, 파이썬의 deque를 사용했다. 난 deque가 참 좋다...^ __ ^

cache크기에 맞춰서 도시가 cache에 있으면 remove했다가 가장 오른쪽(최신사용표시)으로 append해주고,

도시가 없을 경우엔 맨 왼쪽(가장 오래전에 사용된 도시) 도시를 popleft로 없앤 후 새로운 도시를 append 해줬다.

 

 

정답 코드

from collections import deque
def solution(cacheSize, cities):
    q = deque()
    
    if cacheSize == 0:
        return 5*len(cities)
    
    answer = 0
    for city in cities:
        city = city.lower()
        if city in q:
            answer+=1
            q.remove(city)
            q.append(city)
            
        else:
            if len(q)<cacheSize:
                q.append(city)
            else:
                q.popleft()
                q.append(city)
            answer+=5
            
    return answer