[Programmers/프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 캐시 - Python/파이썬 [해설/풀이]

SihoonCho·2022년 9월 21일
0
post-thumbnail
[Programmers/프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차 코딩테스트]
  1. [Lv. 1] 비밀 지도
  2. [Lv. 1] 다트 게임
  3. [Lv. 2] 캐시
  4. [Lv. 3] 셔틀버스
  5. [Lv. 2] 뉴스 클러스터링
  6. [Lv. 2] 프렌즈4블록
  7. [Lv. 3] 추석 트래픽

📌 문제


📝 입력 형식


💻 출력 형식


📖 조건


📖 입출력 예제


📌 풀이


def solution(cacheSize, cities):
    if cacheSize == 0:              # Cache Miss
        return len(cities) * 5      # 실행시간
    
    cache = []                      # LRU, idx = 0 가장 오래된 참조
    answer = 0                      # 실행시간
    cities = [city.lower() for city in cities]  # 문자열 대소문자 통일
    for city in cities:
        if city in cache:               # Cache Hit
            answer += 1                 # 실행시간 +1
            cache.remove(city)          # 캐시갱신, 이전 캐시참조 제거
            cache.append(city)          # 캐시갱신, 현재 캐시참조 추가
        else:                           # Cache Miss
            answer += 5                 # 실행시간 +5
            if len(cache) == cacheSize: # 캐시크기 초과시
                cache.pop(0)            # 캐시교체, 가장 오래된 캐시제거
            cache.append(city)          # 캐시갱신, 가장 최근에 캐시추가
    
    return answer
profile
꾸준히 노력하는 개발자

0개의 댓글