๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 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
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€