1 parent 7145934 commit bf7c42dCopy full SHA for bf7c42d
1 file changed
minjeong/Stack, Queue/2024-03-12-[PGS]-캐시.py
@@ -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
24
+ totalTime += 5 # cache miss
25
26
27
+ return totalTime
0 commit comments