λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
개발/π™‹π™§π™€π™œπ™§π™–π™’π™’π™šπ™§π™¨

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 2018 KAKAO BLIND RECRUITMENT[1μ°¨] 'μΊμ‹œ' 파이썬 풀이

by beomcoder 2023. 2. 21.
728x90
λ°˜μ‘ν˜•
 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

"""
μ§€λ„κ°œλ°œνŒ€μ—μ„œ κ·Όλ¬΄ν•˜λŠ” μ œμ΄μ§€λŠ” μ§€λ„μ—μ„œ λ„μ‹œ 이름을 κ²€μƒ‰ν•˜λ©΄
ν•΄λ‹Ή λ„μ‹œμ™€ κ΄€λ ¨λœ λ§›μ§‘ κ²Œμ‹œλ¬Όλ“€μ„ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 읽어 λ³΄μ—¬μ£ΌλŠ” μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•˜κ³  μžˆλ‹€.
이 ν”„λ‘œκ·Έλž¨μ˜ ν…ŒμŠ€νŒ… 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” μ–΄ν”ΌμΉ˜λŠ” μ„œλΉ„μŠ€λ₯Ό 
μ˜€ν”ˆν•˜κΈ° μ „ 각 λ‘œμ§μ— λŒ€ν•œ μ„±λŠ₯ 츑정을 μˆ˜ν–‰ν•˜μ˜€λŠ”λ°, 

μ œμ΄μ§€κ°€ μž‘μ„±ν•œ λΆ€λΆ„ 쀑 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ κ²Œμ‹œλ¬Όμ„ κ°€μ Έμ˜€λŠ” λΆ€λΆ„μ˜ μ‹€ν–‰μ‹œκ°„μ΄ 
λ„ˆλ¬΄ 였래 κ±Έλ¦°λ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

μ–΄ν”ΌμΉ˜λŠ” μ œμ΄μ§€μ—κ²Œ ν•΄λ‹Ή λ‘œμ§μ„ κ°œμ„ ν•˜λΌκ³  λ‹¦λ‹¬ν•˜κΈ° μ‹œμž‘ν•˜μ˜€κ³ ,
μ œμ΄μ§€λŠ” DB μΊμ‹œλ₯Ό μ μš©ν•˜μ—¬ μ„±λŠ₯ κ°œμ„ μ„ μ‹œλ„ν•˜κ³  μžˆμ§€λ§Œ
μΊμ‹œ 크기λ₯Ό μ–Όλ§ˆλ‘œ ν•΄μ•Ό νš¨μœ¨μ μΈμ§€ λͺ°λΌ λ‚œκ°ν•œ 상황이닀.

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

def solution(cacheSize, cities):
    answer = 0
    cache = []
    for city in cities:
        city = city.lower()
        if city in cache[:cacheSize]:
            answer += 1
            cache.remove(city)
        else:
            answer += 5
            
        cache.insert(0, city)

    return answer
    
"""
λ¨Όμ € μΊμ‹œλ₯Ό 담을 리슀트λ₯Ό λ§Œλ“€μ—ˆλ‹€.

citiesμ—μ„œ cityλ₯Ό ν•˜λ‚˜μ”© κ°€μ§€κ³ μ™€μ„œ cityλ₯Ό μ „λΆ€ μ†Œλ¬Έμž 처리λ₯Ό ν–ˆλ‹€.
그리고 μΊμ‹œμ—μ„œ μΊμ‹œμ‚¬μ΄μ¦ˆλ§ŒνΌ μž˜λΌμ„œ κ·Έμ•ˆμ— cityκ°€ μžˆλ‹€λ©΄
μΊμ‹œλΉ„μš© 1을 λ”ν•΄μ£Όμ—ˆκ³  cityλ₯Ό μΊμ‹œμ—μ„œ μ§€μ›Œμ£Όμ—ˆλ‹€.

μ΄μœ λŠ” LRU이기 λ•Œλ¬Έμ— cityλ₯Ό μ°Ύμ•˜μœΌλ©΄ cityκ°€ 제일 μ•žμœΌλ‘œ μ™€μ•Όν•œλ‹€.
cityκ°€ μΊμ‹œμ‚¬μ΄μ¦ˆ 제일 뒀에 μžˆλ‹€λ©΄ μ•žμ— λ„£μ–΄μ„œ 밀어버리면 λ˜μ§€λ§Œ
쀑간에 μžˆλŠ” κ²½μš°λŠ” μ§€μ›Œμ£Όμ§€ μ•ŠλŠ”λ‹€λ©΄ cityκ°€ 2κ°œκ°€ λ˜μ„œ λ‹€λ₯Έ 값이 λ°€λ¦°λ‹€.
ex) japan -> [korea, japan, india] // [japan, korea, india]

그리고 ifλ¬Έ λ°–μ—μ„œ cityλ₯Ό λ„£μ–΄μ£ΌλŠ” μ΄μœ λŠ” μΊμ‹œμ‚¬μ΄μ¦ˆμ•ˆμ— cityκ°€
μžˆμœΌλ‚˜ μ—†μœΌλ‚˜ cityλ₯Ό μΊμ‹œ 제일 μ•žμ— λ„£μ–΄μ£Όμ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μΊμ‹œμ‚¬μ΄μ¦ˆμ•ˆμ— cityκ°€ μ—†λ‹€λ©΄ μΊμ‹œλΉ„μš© 5λ₯Ό λ”ν•΄μ£Όμ—ˆλ‹€.
"""
728x90
λ°˜μ‘ν˜•

λŒ“κΈ€