프로그래머스. 캐시 파이썬 풀이

minan·2021년 6월 23일
0

프로그래머스

목록 보기
30/92

프로그래머스. 2018 KAKAO BLIND RECRUITMENT. Level 2. 캐시 파이썬 풀이

문제링크 https://programmers.co.kr/learn/courses/30/lessons/17680

LRU 알고리즘 : https://ko.wikipedia.org/wiki/Least_Recently_Used

def solution(cacheSize, cities):
    answer = 0
    
    # 현재 캐시에 있는 도시
    q = []
    
    # 캐시사이즈가 0이라면 모든 도시의 실행시간이 5가 걸린다
    if cacheSize == 0:
        return 5*len(cities)
    else: # 캐시사이즈 != 0
        for city in cities: # 도시를 하나씩 돌며
            city = city.lower() # 소문자로 변환
            if not city in q: # 캐시에 없다면
            	# 캐시의 꽉 찼다면 LRU에 의하여 맨처음 제거
                if len(q) == cacheSize: 
                    q.pop(0)
                q.append(city) # 캐시에 추가
                answer += 5  # 캐시미스이므로 실행시간 5
            else: # 캐시에 있다면
            	# LRU에 따라 캐시에 있는 도시를 맨 뒤로
                q.pop(q.index(city)) 
                q.append(city)
                answer += 1

    return answer
profile
https://github.com/minhaaan

0개의 댓글