โ“  ๋ฌธ์ œ

 

๐Ÿ›Ž๏ธ  ์•„์ด๋””์–ด

1. ์บ์‹œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ LRU๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด deque๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

2. ๋„์‹œ ์ด๋ฆ„์„ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜จ๋‹ค.
    a. ๋งŒ์•ฝ deque์•ˆ์— ์žˆ์œผ๋ฉด(hit) ์ œ๊ฑฐ ํ›„ time += 1
    b. deque์•ˆ์— ์—†์œผ๋ฉด(miss) ๊ฐ€์žฅ ์™ผ์ชฝ ์š”์†Œ ์ œ๊ฑฐ ํ›„ time += 1 (LRU๊ฐ€ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ)

3. ํ•ด๋‹น ๋„์‹œ๋ฅผ ํ์— ๋„ฃ์–ด์ค€๋‹ค.

** cache๊ฐ€ 0์ธ ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•จ. -> hit์ธ ๊ฒฝ์šฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— city๊ฐœ์ˆ˜ * 5๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

 

๐Ÿ’ป  ํ’€์ด

from collections import deque

def solution(cacheSize, cities):
  if cacheSize == 0:
    return len(cities) * 5

  time = 0
  cache = deque([0 for i in range(cacheSize)])

  for city in cities:
    city = city.lower()
    if city in cache:
      cache.remove(city)
      time += 1
    else:
      cache.popleft()
      time += 5
    cache.append(city)
  return time

 

+ Recent posts