Skip to content

Commit bf7c42d

Browse files
committed
[PGS] 카카오-[1차] 캐시 / Level 2 / 43분 (성공)
1 parent 7145934 commit bf7c42d

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from collections import deque
2+
3+
def solution(cacheSize, cities):
4+
totalTime = 0
5+
cache = deque([])
6+
'''
7+
전체적인 과정은 FIFO로 수행된다.
8+
만약 이미 존재하는 도시라면 맨 뒤로 다시 보낸다.
9+
'''
10+
11+
for i in range(len(cities)):
12+
city = cities[i].lower() # 대소문자 구분 없으므로 cities를 lowercase로 바꾸기
13+
if cacheSize == 0: # cacheSize가 0인 경우에 대한 예외처리(TC 7, 17)
14+
totalTime += 5
15+
continue # 그 후 바로 빠져나옴
16+
if city in cache: # 캐시에 도시가 이미 존재하는 경우
17+
cache.remove(city)
18+
cache.append(city)
19+
totalTime += 1 # cache hit
20+
else:
21+
if len(cache) == cacheSize and cacheSize > 0: # 캐시가 가득찼다면, 맨 앞에 하나 버린다. 이때 cacheSize가 0인 경우도 있다. 이때는 popleft하면 에러가 나므로 cacheSize가 0이상인 경우만 처리되도록 한다.
22+
cache.popleft()
23+
cache.append(city)
24+
totalTime += 5 # cache miss
25+
26+
27+
return totalTime

0 commit comments

Comments
 (0)