๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] [1์ฐจ] ์บ์‹œ - 2018 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2021. 1. 19. 14:49

<[1์ฐจ] ์บ์‹œ>

๋ฌธ์ œ(์ถœ์ฒ˜: https://school.programmers.co.kr/learn/courses/30/lessons/17680)

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

 

def solution(cacheSize, cities):
    answer = 0
    
    result=[]
    
    for i in range(len(cities)):
        cities[i]=cities[i].lower() #๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž ์ƒ๊ด€ x
        if(cacheSize==0): #cacheSize๊ฐ€ 0์ด๋ฉด ๋‹ค ์‹คํ–‰ ์‹œ๊ฐ„ 5
            answer=len(cities)*5
            break
        if(cities[i] in result): #๊ฐ’์ด ์žˆ์œผ๋ฉด
            result.pop(result.index(cities[i]))
            result.append(cities[i]) #๋งจ ๋์œผ๋กœ 
            answer+=1 # 1
        else:
            if(len(result)==cacheSize): #์บ์‹œ ํฌ๊ธฐ๋งŒํผ ๋‹ค ์ฑ„์›Œ์ ธ์žˆ์œผ๋ฉด
                result.pop(0) #์ œ์ผ ์•ˆ์“ฐ๋Š” ๊ฒƒ pop
            answer+=5 #5
            result.append(cities[i])

    return answer

  ์ด ๋ฌธ์ œ์—์„œ ์บ์‹œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ LRU(Least Recently Used)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

  LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ์ œ์ผ ์˜ค๋žซ๋™์•ˆ ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  ์ฒ˜์Œ์—๋Š” ์ด ๋ฌธ์ œ๋ฅผ dict๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋ ค ํ–ˆ์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ค ๋ณด๋‹ˆ ๋‹จ์ˆœ list๋กœ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์•„ 

  ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

 

  1) cities list ์ˆœํšŒ

     1-1) ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž ์ƒ๊ด€์ด ์—†์œผ๋ฏ€๋กœ ์†Œ๋ฌธ์ž๋กœ ๋‹ค ๋ฐ”๊ฟ”์„œ ์ €์žฅ

     1-2) cacheSize๊ฐ€ 0์ด๋ฉด ์ €์žฅํ•  ๊ณณ์ด ์—†์–ด ๋‹ค miss์ด๋ฏ€๋กœ cities์˜ ๊ธธ์ด๋งŒํผ 5๋ฅผ ๊ณฑํ•œ ํ›„ ์ข…๋ฃŒ

     1-3) list ์•ˆ์— ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ํ•œ๋ฒˆ ์“ด ์ ์ด ์žˆ์–ด ์บ์‹œ ์•ˆ์— ์žˆ๋‹ค๋Š” ๋œป

             -> ์ตœ๊ทผ์— ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค๋กœ ๋ณด๋ƒ„

             -> hit ์ด๋ฏ€๋กœ ์‹คํ–‰์‹œ๊ฐ„ 1 ์ถ”๊ฐ€

     1-4) list ์•ˆ์— ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ

            1-4-1) ์บ์‹œ ํฌ๊ธฐ๋งŒํผ ์บ์‹œ๊ฐ€ ๋‹ค ์ฐจ์žˆ์œผ๋ฉด -> ์ œ์ผ ์•ˆ ์“ฐ๋Š” ๊ฒƒ์€ ๋งจ ์•ž์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋งจ ์•ž ๊ฐ’ pop

            1-4-2) miss๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์‹คํ–‰์‹œ๊ฐ„ 5 ์ถ”๊ฐ€

            1-4-3) ์บ์‹œ์— ์ €์žฅ


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges