https://programmers.co.kr/learn/courses/30/lessons/17680
LRU를 구현하면 된다.
나의 풀이
def solution(cacheSize, cities):
if cacheSize == 0:
return len(cities) * 5
answer = 0
cache = ['']*cacheSize
for city in cities:
city = city.upper()
if city in cache:
index = cache.index(city)
cache = cache[:index]+cache[index+1:]+cache[index:index+1]
answer +=1
else :
cache = cache[1:]
cache.append(city)
answer +=5
return answer
다른 사람 풀이
deque를 활용해서 깔끔하게 구현한 풀이라 가져와 봤다.
곰곰이 생각해보니 LRU를 queue 방식으로 구현하면 직관적으로 이해가 쉽다.
또한 maxlen 파라미터로 최대 큐 크기를 설정할 수 있다.
def solution(cacheSize, cities):
import collections
cache = collections.deque(maxlen=cacheSize)
time = 0
for i in cities:
s = i.lower()
if s in cache:
cache.remove(s)
cache.append(s)
time += 1
else:
cache.append(s)
time += 5
return time
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] n^2 배열 자르기 (Python) (0) | 2021.11.04 |
---|---|
[프로그래머스] 점프와 순간 이동(Python) (0) | 2021.11.03 |
[프로그래머스] 모음사전 (Python) (0) | 2021.11.03 |
[프로그래머스] 전력망을 둘로 나누기 (Python) (0) | 2021.11.03 |
[프로그래머스] 교점에 별 만들기 (Python) (0) | 2021.11.03 |
댓글