풀이과정


1. cache를 deque로 구현

2. 대/소문자 구분을 하지 않는다고 하였으므로 lower() 함수를 사용하여 소문자로 변환

3. 캐시 히트일 경우 해당 요소를 deque에서 지워주고 deque의 맨 뒤에 넣어 줌 (위치 이동)

4. 캐시 미스일 경우 해당 요소를 deque에 넣어줌과 동시에 deque의 크기가 넘친다면 deque의 가장 왼쪽 요소(가장 사용이 되지 않은 요소)를 지워준다.

5. 전체 비용을 계산하면 완료


소스 코드

from collections import deque

def solution(cacheSize, cities):
    answer = 0

    deq = deque()

    for city in cities:
        city = city.lower()
        if city in deq:
            answer += 1
            deq.remove(city)
            deq.append(city)
        else:
            answer += 5
            deq.append(city)
            # 캐시 초과 시 가장 사용이 되지 않은 캐시 빼줌
            if len(deq) > cacheSize: 
                deq.popleft()

    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 스킬트리  (0) 2021.06.29
[ Lv 2 ] 이진 변환 반복하기  (0) 2021.06.29
[ Lv 2 ] 점프와 순간 이동  (0) 2021.06.28
[ Lv 2 ] 주식가격  (0) 2021.06.28
[ Lv 2 ] [1차] 프렌즈4블록  (0) 2021.06.27

+ Recent posts