[알고리즘/프로그래머스] - 캐시(python)

유현민·2022년 6월 15일
0

알고리즘

목록 보기
210/253
post-custom-banner

문제

if문을 사용하여 경우를 세개로 나누어 구현했다.

  1. cache안에 현재 도시가 있는 경우
  2. cache의 길이가 최대 길이가 아닌 경우
  3. cache의 길이가 최대이고 cache 안에 현재 도시가 없는 경우
def solution(cacheSize, cities):
    answer = 0
    cache = list()
    if cacheSize == 0:
        return 5 * len(cities)

    for i in cities:
        i = i.lower()
        if i in cache:
            cache.remove(i)
            cache.insert(0, i)
            answer += 1
        elif len(cache) < cacheSize:
            cache.insert(0, i)
            answer += 5
        else:
            cache.pop()
            cache.insert(0, i)
            answer += 5

    return answer

deque의 maxlen을 사용하면 deque의 길이를 정할 수 있고 append left를 이용하여 삽입하면 해당 길이를 넘어가면 제일 오른쪽 원소가 삭제된다.

from collections import deque


def solution(cacheSize, cities):
    answer = 0
    cache = deque(maxlen=cacheSize)
    if not cacheSize:
        return 5 * len(cities)
    for i in cities:
        s = i.lower()
        if s in cache:
            cache.remove(s)
            cache.append(s)
            answer += 1
        else:
            cache.append(s)
            answer += 5

    return answer
profile
smilegate
post-custom-banner

0개의 댓글