๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] [2018 KAKAO BLIND RECRUITMENT] [Python] Level2_[1์ฐจ]์บ์‹œ

Dbswnstjd 2022. 10. 12. 04:54

๋ฌธ์ œ

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

ํ’€์ด

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2๋‹จ๊ณ„ - [1์ฐจ] ์บ์‹œ 
from collections import deque
def solution(cacheSize, cities):
    if cacheSize == 0: return 5 * len(cities)
    answer = 0
    cache = deque(maxlen=cacheSize)
    for city in cities:
        city = city.upper()

        if city in cache: # cahce hit
            cache.remove(city)
            cache.append(city)
            answer += 1
        else: # cache miss
            cache.append(city)
            answer += 5

    return answer

LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ๋งค์šฐ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ด๋‹ค. 

๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ๋ดค์„๋•Œ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์•ž๋’ค์˜ ์‚ญ์ œ์™€ ์‚ฝ์ž…์ด O(1)์ธ ๋ฐํฌ๋ฅผ ๋– ์˜ฌ๋ ค์„œ ์ด๋ฒˆ ๋ฌธ์ œ์— ์‚ฌ์šฉํ•˜์˜€๋‹ค.

์ผ๋‹จ ์บ์‹œ ํฌ๊ธฐ๊ฐ€ 0์ด๋ผ๋ฉด ๊ฐ’์ด ๋“ค์–ด์˜ฌ๋•Œ๋งˆ๋‹ค ์บ์‹œ๋ฅผ ๊ต์ฒดํ•ด์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— ๋„์‹œ์˜ ์ˆ˜ * ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(5) ์ด๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์บ์‹œ๋ฅผ ๋ฐํฌ๋กœ ์„ ์–ธํ•ด์ฃผ๊ณ  

์ž…๋ ฅ์œผ๋กœ ๋ฐ›์„ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•˜๋„๋ก ํ•œ๋‹ค.

์ฒซ๋ฒˆ์งธ ์กฐ๊ฑด์ธ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ  ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋น„๊ต๋กœ ํ†ต์ผ ํ•˜์˜€๋‹ค. 

๊ทธ ํ›„ ๋งŒ์•ฝ์— ์ž…๋ ฅ๊ฐ’์ด ์บ์‹œ ์•ˆ์— ์กด์žฌํ•œ๋‹ค๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์€ ์ œ๊ฑฐํ•˜๊ณ  ๋ฑ์˜ ๋งจ ๋์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค.  

๊ทธ๋ฆฌ๊ณ  ์บ์‹œ ์ ์ค‘์ด๋ผ๋ฉด ์‹คํ–‰์‹œ๊ฐ„์ด 1์ด๋ฏ€๋กœ ๋”ํ•ด์ค€๋‹ค. 

๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ ์บ์‹œ ๋ฏธ์Šค๋ผ๋ฉด ๋ฑ์˜ ๋์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 

** ์—ฌ๊ธฐ์„œ deque์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ cacheSize๋กœ ํ•ด๋‘์—ˆ์œผ๋ฏ€๋กœ else์—์„œ ๊ตณ์ด ๋น„๊ต๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์ด์ฆˆ ํฌ๊ธฐ๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ๋งจ ์•ž์˜ ๊ฐ’์ด ๋น ์ง€๊ฒŒ ๋œ๋‹ค.