ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

 

๐ŸŽˆ 2018 KAKAO BLIND RECRUITMENT [1์ฐจ]

 

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/17680

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ์บ์‹œ

3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro

programmers.co.kr

 

 

thinking

LRU(Least Recently Used) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•ด์„œ ํ’€์—ˆ๊ณ , ์บ์‹œ ์‚ฌ์ด์ฆˆ๊ฐ€ 0์ผ ๋•Œ๋Š” ์ฐจํ”ผ ํ™•์ธ ๋ถˆ๊ฐ€๋Šฅ์ด๋ฏ€๋กœ ๊ฑ *5 ํ•ด์คฌ๋‹ค.

 

 

์ฝ”๋“œ

def solution(cacheSize, cities):
    answer = 0
    cache = []
    if cacheSize == 0:
        answer = len(cities) * 5
    else:
        for city in cities:  # ์‹œํ‹ฐ ์ˆœํšŒํ•˜๋ฉด์„œ
            city = city.lower()  # ์ „๋ถ€ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์„œ ๊ณ„์‚ฐ
            if city not in cache:  # ์บ์‹œ์— ์—†์œผ๋ฉด์„œ (cache miss)
                if len(cache) < cacheSize:  # ์บ์‹œ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋„ฃ์Œ
                    cache.append(city)
                else:  # ์บ์‹œ์‚ฌ์ด์ฆˆ๋ž‘ ๊ฐ™์œผ๋ฉด ๊ฐ€์žฅ ์˜ค๋ž˜์ „ ์ฐธ์กฐํ•œ ๊ฐ’ ๋นผ๊ณ  ํ˜„์žฌ๊ฐ’ ๋„ฃ์–ด์คŒ
                    cache.pop(0)
                    cache.append(city)
                answer += 5
            else:  # ์บ์‹œ์— ์žˆ๋Š” ๊ฒฝ์šฐ (cache hit)
                cache.pop(cache.index(city))  # ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์žฅ ์ตœ์‹  ์œ„์น˜์— ๋„ฃ์–ด์คŒ
                cache.append(city)
                answer += 1
            
    return answer

 

๋Œ“๊ธ€