[Programmers] μΊμ
Updated:
μΊμ
μΊμ λ₯Ό ν΄λ¦νλ©΄ λ°λ‘ μ΄λνλ€.
μ°μ μΊμμ κ°λ κ³Ό μΊμλ₯Ό κ΅μ²΄ ν λ μ μκ³ λ¦¬μ¦μ μκ³ μμ΄μΌ νλ€.
μ΄ λ¬Έμ μμ LRU (Least Recently Used) μκ³ λ¦¬μ¦μ μ¬μ©νλΌκ³ νλ€.
μ λ² νκΈ°μ μ΄μ체μ λ₯Ό λ°°μ°λ©΄μ νμ΄μ§ κ΅μ²΄λ₯Ό ν λ μκ³ λ¦¬μ¦μ λ°°μ λλ° λκ°μ κ°λ μ΄μλ€.
LRU λ λ§ κ·Έλλ‘ κ°μ₯ μ€λμ μ μ¬μ© λ μΊμλ₯Ό λ°κΎΈλ©΄ λλ€.
deque μ Maxlen μ μ¬μ©νμ¬ μν ν μ²λΌ μ¬μ© νλ©΄ ꡬν ν μ μλ€.
κ·Έλ κ² λλ€λ©΄ 무쑰건 index 0 μ μλ μΊμκ° κ°μ₯ μ€λμ μ μ¬μ© λ μΊμμ΄λ€.
νμ§λ§ λλ μ΅κ·Ό μ¬μ© ν μΊμλ₯Ό λ°λ‘ μ μ₯ν΄ κ΄λ¦¬νλ€. μΊμλ₯Ό κ³ μ μμΌ λμ λ€ κ°μ₯ μ€λ λ μΊμμ index λ₯Ό μ°Ύμ λ°κΎΌ κ² μ΄λ€.
μ΄λ κ² λλ€λ©΄ μΊμ μ¬μ΄μ¦κ° λ€λ₯Ό λ λ§λ€ μ΅κ·Ό μ¬μ© ν μΊμ λͺ©λ‘μ ν¬κΈ°λ λ¬λΌμ§κ³ μ κ²½ μ¨μΌν κ² λ§μμ§λ€.
deque λ₯Ό μ¬μ©νμΌλ©΄μ deque μ μ±μ§μ μ¬μ©νμ§ λͺ»νλ€λ κ²μ΄ μ‘°κΈ μμ½λ€.
from collections import deque
def solution(cacheSize, cities):
total = 0
cache = deque()
cities = [val.title() for val in cities]
if cacheSize == 0:
return len(cities) * 5
for idx, val in enumerate(cities):
if len(cache) < cacheSize:
if val in cache:
total += 1
else:
cache.append(val)
total += 5
elif len(cache) == cacheSize:
if val in cache:
total += 1
else:
lately_used = []
lately_idx = idx - 1
while len(lately_used) < cacheSize - 1:
if cities[lately_idx] not in lately_used:
lately_used.append(cities[lately_idx])
lately_idx -= 1
chance_val = ''
for j in cache:
if j not in lately_used:
chance_val = j
input_idx = cache.index(chance_val)
cache.insert(input_idx, val)
cache.remove(chance_val)
total += 5
return total
μ΄ μ½λκ° deque μ±μ§μ μλ²½ν μ΄μ©ν΄ LRU λ₯Ό ꡬννλ€κ³ μκ°νλ€.
import collections
def solution(cacheSize, cities):
cache = collections.deque(maxlen=cacheSize)
time = 0
for cur in cities:
val = cur.lower()
if val in cache:
cache.remove(val)
cache.append(val)
time += 1
else:
cache.append(val)
time += 5
print(cache)
return time
Leave a comment