[프로그래머스] [1차] 캐시

yunu·2022년 3월 28일
0
post-thumbnail

출처: 프로그래머스 코딩 테스트 연습, [프로그래머스] [1차] 캐시

새로 알게된 것들

LRU(Least Recently Used)이 가장 안 쓰인 캐시 먼저 교체된다는 캐시 교체 알고리즘인 것을 몰랐다. 영어를 잘 못해서 저 영어만 가지고는 파악하지 못했다...

풀이

1. 먼저 도시들을 모두 소문자로 고친다.
2. 도시들을 큐 자료구조에 저장한다.
3. 큐에 다음 도시가 존재한다면 큐에서 해당 도시를 맨 뒤로 옮기고 실행시간 1을 추가한다. 나는 삭제해서 다시 뒤에 이어 붙였다.
4. 존재하지 않으면 캐시 미스로 실행시간 5를 추가한다.

코드

def solution(cacheSize, cities):
    
    if cacheSize == 0: return 5 * len(cities)
    answer, queue = 0, []
    for city in cities:
        city, flag = city.lower(), True
        for v_city in queue:
            if v_city == city:
                flag = False
                answer += 1
                queue.remove(v_city)
                queue.append(city)
                break
        if flag:
            answer += 5
            if len(queue) == cacheSize: queue.pop(0)
            queue.append(city)
        
    return answer

다른 사람 풀이를 보며 알게 된 점

캐시에 도시가 존재하는지 확인할 때 반복문을 통해서 확인하지 않고 그냥 if v_city in queue:로 했으면 flag를 사용하지 않아도 되고 더 코드가 간결해졌을 것 같다.

profile
rip

0개의 댓글