반응형
문제 설명
알고리즘 고민
LRU(Least Recently Used) 알고리즘을 구현하는 문제이다. 먼저, 캐시 크기가 0인 경우는 cities 개수에 5를 곱한 값을 반환하도록 하여 처리한다. 대문자와 소문자를 구별하지 않는 조건에 맞도록 upper 함수를 적용하여 처리한다. 만약 캐시 안에 출력할 도시가 있으면 해당 도시를 출력하고 가장 앞으로 옮긴다. 없다면 만약 캐시가 꽉 채워져 있는지 확인하고 꽉 채워져있으면 마지막 요소를 pop하고 아니라면 굳이 pop할 필요가 없으므로 그냥 추가만 하도록 한다.
코드
def solution(cacheSize, cities):
answer = 0
cache = []
if cacheSize == 0:
return len(cities) * 5
for i in range(len(cities)):
cities[i] = cities[i].upper()
for city in cities:
if city in cache:
cache.remove(city)
cache.append(city)
answer += 1
else:
if len(cache) >= cacheSize:
cache.pop(0)
cache.append(city)
answer += 5
return answer
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 - 방문 길이(Python) (0) | 2025.02.11 |
---|---|
프로그래머스 - 튜플(Python) (0) | 2025.02.10 |
프로그래머스 - 의상(Python) (0) | 2025.02.08 |
프로그래머스 - 영어 끝말잇기(Python) (0) | 2025.02.07 |
프로그래머스 - 2 x n 타일링(Python) (0) | 2025.02.04 |