1. 문제
코딩테스트 연습 - [1차] 캐시
3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro
programmers.co.kr
2. 풀이 및 개선
- 캐시 교체 알고리즘은 LRU(Least Recently Used)을 구현하는 것이 핵심이다.
- 시간제한도 널널하고 문제는 쉬운 편이다.
- 다만 졸릴 때 풀어서 그런지 너무 비효율적으로 짰다.
- 다른 코드를 보니 캐쉬 배열을 관리하면서 가장 오래된 캐쉬데이터를 pop(0)으로 빼주고 append로 최근 데이터를 넣어주는 식으로 구현하였다.
3. 코드
def solution(cacheSize, cities):
if cacheSize == 0 :
return len(cities) * 5
answer = 0
cache = []
used = []
for i, city in enumerate(cities) :
city = city.lower()
if city not in cache :
if len(cache) < cacheSize:
cache.append(city)
used.append(i)
else :
idx = used.index(min(used))
cache[idx] = city
used[idx] = i
answer += 5
else :
idx = cache.index(city)
used[idx] = i
answer += 1
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2018 KAKAO BLIND RECRUITMENT[1차] 다트 게임 (0) | 2021.03.08 |
---|---|
2018 KAKAO BLIND RECRUITMENT- 비밀지도, 파이썬 (0) | 2021.03.07 |
2018 카카오 블라인드 코딩테스트 - 셔틀버스, 파이썬 (0) | 2021.03.05 |
프로그래머스 2018 카카오 코딩테스트 - 프렌즈4블록, 파이썬 (0) | 2021.03.05 |
2018 KAKAO BLIND RECRUITMENT- 뉴스 클러스터링, 파이썬 (0) | 2021.03.04 |