250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 ([1μ°¨] μΊμ‹œ) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 ([1μ°¨] μΊμ‹œ)

γ…… γ…œ γ…” γ…‡ 2023. 1. 19. 01:29
728x90

1. 문제 μ„€λͺ…

μ§€λ„κ°œλ°œνŒ€μ—μ„œ κ·Όλ¬΄ν•˜λŠ” μ œμ΄μ§€λŠ” μ§€λ„μ—μ„œ λ„μ‹œ 이름을 κ²€μƒ‰ν•˜λ©΄ ν•΄λ‹Ή λ„μ‹œμ™€ κ΄€λ ¨λœ 맛집 κ²Œμ‹œλ¬Όλ“€μ„ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 읽어 λ³΄μ—¬μ£ΌλŠ” μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•˜κ³  μžˆλ‹€.
이 ν”„λ‘œκ·Έλž¨μ˜ ν…ŒμŠ€νŒ… 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” μ–΄ν”ΌμΉ˜λŠ” μ„œλΉ„μŠ€λ₯Ό μ˜€ν”ˆν•˜κΈ° μ „ 각 λ‘œμ§μ— λŒ€ν•œ μ„±λŠ₯ 츑정을 μˆ˜ν–‰ν•˜μ˜€λŠ”λ°, μ œμ΄μ§€κ°€ μž‘μ„±ν•œ λΆ€λΆ„ 쀑 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ κ²Œμ‹œλ¬Όμ„ κ°€μ Έμ˜€λŠ” λΆ€λΆ„μ˜ μ‹€ν–‰μ‹œκ°„μ΄ λ„ˆλ¬΄ 였래 κ±Έλ¦°λ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€.
μ–΄ν”ΌμΉ˜λŠ” μ œμ΄μ§€μ—κ²Œ ν•΄λ‹Ή λ‘œμ§μ„ κ°œμ„ ν•˜λΌκ³  λ‹¦λ‹¬ν•˜κΈ° μ‹œμž‘ν•˜μ˜€κ³ , μ œμ΄μ§€λŠ” DB μΊμ‹œλ₯Ό μ μš©ν•˜μ—¬ μ„±λŠ₯ κ°œμ„ μ„ μ‹œλ„ν•˜κ³  μžˆμ§€λ§Œ μΊμ‹œ 크기λ₯Ό μ–Όλ§ˆλ‘œ ν•΄μ•Ό νš¨μœ¨μ μΈμ§€ λͺ°λΌ λ‚œκ°ν•œ 상황이닀.

μ–΄ν”ΌμΉ˜μ—κ²Œ μ‹œλ‹¬λ¦¬λŠ” μ œμ΄μ§€λ₯Ό 도와, DB μΊμ‹œλ₯Ό μ μš©ν•  λ•Œ μΊμ‹œ 크기에 λ”°λ₯Έ μ‹€ν–‰μ‹œκ°„ μΈ‘μ • ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯ ν˜•μ‹

  • μΊμ‹œ 크기(cacheSize)와 λ„μ‹œμ΄λ¦„ λ°°μ—΄(cities)을 μž…λ ₯λ°›λŠ”λ‹€.
  • cacheSizeλŠ” μ •μˆ˜μ΄λ©°, λ²”μœ„λŠ” 0 ≦ cacheSize β‰¦ 30 이닀.
  • citiesλŠ” λ„μ‹œ μ΄λ¦„μœΌλ‘œ 이뀄진 λ¬Έμžμ—΄ λ°°μ—΄λ‘œ, μ΅œλŒ€ λ„μ‹œ μˆ˜λŠ” 100,000κ°œμ΄λ‹€.
  • 각 λ„μ‹œ 이름은 곡백, 숫자, 특수문자 등이 μ—†λŠ” 영문자둜 κ΅¬μ„±λ˜λ©°, λŒ€μ†Œλ¬Έμž ꡬ뢄을 ν•˜μ§€ μ•ŠλŠ”λ‹€. λ„μ‹œ 이름은 μ΅œλŒ€ 20자둜 이루어져 μžˆλ‹€.

좜λ ₯ ν˜•μ‹

  • μž…λ ₯된 λ„μ‹œμ΄λ¦„ 배열을 μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•  λ•Œ, "총 μ‹€ν–‰μ‹œκ°„"을 좜λ ₯ν•œλ‹€.

 

 

 

 

2. μ œν•œ 쑰건

  • μΊμ‹œ ꡐ체 μ•Œκ³ λ¦¬μ¦˜μ€ LRU(Least Recently Used)λ₯Ό μ‚¬μš©ν•œλ‹€.
  • cache hit일 경우 μ‹€ν–‰μ‹œκ°„μ€ 1이닀.
  • cache miss일 경우 μ‹€ν–‰μ‹œκ°„μ€ 5이닀.

 

 

 

 

 

 

3. λ‚΄ 풀이 

from collections import deque
def solution(cacheSize, cities):
    answer = 0
    cache = deque()
    for city in cities:
        city = city.lower()
        if city not in cache and len(cache) < cacheSize:
            cache.append(city)
            answer += 5
        elif city not in cache and len(cache) == cacheSize:
            cache.append(city)
            cache.popleft()
            answer += 5
        else:
            cache.remove(city)
            answer += 1
            cache.append(city)
        
    return answer

 

 

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이

def solution(cacheSize, cities):
    import collections
    cache = collections.deque(maxlen=cacheSize)
    time = 0
    for i in cities:
        s = i.lower()
        if s in cache:
            cache.remove(s)
            cache.append(s)
            time += 1
        else:
            cache.append(s)
            time += 5
    return time

 

maxlen.. λ©”λͺ¨...

728x90
Comments