def solution(cacheSize, cities):
cities = [city.lower() for city in cities]
time = 0
d = {}
if cacheSize==0:
return len(cities)*5
for city in cities:
if d.get(city)==None:
if len(d)==cacheSize:
cache_keys_sorted = sorted(d, key=lambda x: d[x])
del d[cache_keys_sorted[0]]
time += 5
else:
time += 1
d[city] = time
return time
생각해보기
- 딕셔너리 d는 캐시이다.
- 주어진 도시 리스트를 하나하나 돈다.
- 캐시에 해당 도시를 업데이트 시간 정보가 없는 경우:
- 캐시가 꽉 찼을 경우 업데이트가 가장 안된 도시를 제거한다.
- 시간을 5 더한다.
- 캐시에 해당 도시를 업데이트 시간 정보가 있는 경우:
- 시간을 1 더한다.
- 캐시 안 해당 도시에 시간을 변경된 시간으로 업데이트 한다.
- 캐시에 해당 도시를 업데이트 시간 정보가 없는 경우:
'문제 풀이' 카테고리의 다른 글
[프로그래머스] [1차] 추석 트래픽 / 2018 카카오 블라인드 채용 / python (0) | 2020.05.01 |
---|---|
[프로그래머스] 오픈채팅방 / 2019 카카오 블라인드 채용 / python (0) | 2020.03.11 |
[프로그래머스] [1차] 뉴스 클러스터링 / 2018 카카오 블라인드 채용 / python (0) | 2020.03.11 |
[프로그래머스] [1차] 프렌즈4블록 / 2018 카카오 블라인드 채용 / python (0) | 2020.03.11 |
[프로그래머스] [3차] 방금 그곡 / 2018 카카오 블라인드 채용 / python (0) | 2020.03.11 |