๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ]์บ์‹œ (level2, python)

2022. 9. 9. 11:23

๋ฌธ์ œ ์„ค๋ช…

 

์ง€๋„๊ฐœ๋ฐœํŒ€์—์„œ ๊ทผ๋ฌดํ•˜๋Š” ์ œ์ด์ง€๋Š” ์ง€๋„์—์„œ ๋„์‹œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•ด๋‹น ๋„์‹œ์™€ ๊ด€๋ จ๋œ ๋ง›์ง‘ ๊ฒŒ์‹œ๋ฌผ๋“ค์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์–ด ๋ณด์—ฌ์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค.


์ด ํ”„๋กœ๊ทธ๋žจ์˜ ํ…Œ์ŠคํŒ… ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ์–ดํ”ผ์น˜๋Š” ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ•˜๊ธฐ ์ „ ๊ฐ ๋กœ์ง์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ธก์ •์„ ์ˆ˜ํ–‰ํ•˜์˜€๋Š”๋ฐ, ์ œ์ด์ง€๊ฐ€ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„ ์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ถ€๋ถ„์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.


์–ดํ”ผ์น˜๋Š” ์ œ์ด์ง€์—๊ฒŒ ํ•ด๋‹น ๋กœ์ง์„ ๊ฐœ์„ ํ•˜๋ผ๊ณ  ๋‹ฆ๋‹ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์˜€๊ณ , ์ œ์ด์ง€๋Š” DB ์บ์‹œ๋ฅผ ์ ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์‹œ๋„ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์บ์‹œ ํฌ๊ธฐ๋ฅผ ์–ผ๋งˆ๋กœ ํ•ด์•ผ ํšจ์œจ์ ์ธ์ง€ ๋ชฐ๋ผ ๋‚œ๊ฐํ•œ ์ƒํ™ฉ์ด๋‹ค.

 

์–ดํ”ผ์น˜์—๊ฒŒ ์‹œ๋‹ฌ๋ฆฌ๋Š” ์ œ์ด์ง€๋ฅผ ๋„์™€, DB ์บ์‹œ๋ฅผ ์ ์šฉํ•  ๋•Œ ์บ์‹œ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ์‹คํ–‰์‹œ๊ฐ„ ์ธก์ • ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ ํ˜•์‹

 

  • ์บ์‹œ ํฌ๊ธฐ(cacheSize)์™€ ๋„์‹œ์ด๋ฆ„ ๋ฐฐ์—ด(cities)์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
  • cacheSize๋Š” ์ •์ˆ˜์ด๋ฉฐ, ๋ฒ”์œ„๋Š” 0 โ‰ฆ cacheSize โ‰ฆ 30 ์ด๋‹ค.
  • cities๋Š” ๋„์‹œ ์ด๋ฆ„์œผ๋กœ ์ด๋ค„์ง„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ, ์ตœ๋Œ€ ๋„์‹œ ์ˆ˜๋Š” 100,000๊ฐœ์ด๋‹ค.
  • ๊ฐ ๋„์‹œ ์ด๋ฆ„์€ ๊ณต๋ฐฑ, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž ๋“ฑ์ด ์—†๋Š” ์˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋„์‹œ ์ด๋ฆ„์€ ์ตœ๋Œ€ 20์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

์ถœ๋ ฅ ํ˜•์‹

 

  • ์ž…๋ ฅ๋œ ๋„์‹œ์ด๋ฆ„ ๋ฐฐ์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ, "์ด ์‹คํ–‰์‹œ๊ฐ„"์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์กฐ๊ฑด

 

  • ์บ์‹œ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ LRU(Least Recently Used)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • cache hit์ผ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 1์ด๋‹ค.
  • cache miss์ผ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 5์ด๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

 

์บ์‹œํฌ๊ธฐ ๋„์‹œ์ด๋ฆ„ ์‹คํ–‰์‹œ๊ฐ„
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", "Rome", "Paris", "Jeju", "NewYork", "Rome"] 60
5 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Rome", "Paris", "Jeju", "NewYork", "Rome"] 52
2 ["Jeju", "Pangyo", "NewYork", "newyork"] 16
0 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 25

 


ํ’€์ด ์ฝ”๋“œ

from collections import deque

def solution(cacheSize, cities):
    if cacheSize == 0:
        return len(cities) * 5
    
    cache = deque()
    answer = 0
    for city in cities:
        city = city.lower()
        if city in cache:
            answer += 1
            cache.remove(city)
            cache.append(city)
        else:
            if len(cache) < cacheSize:
                answer += 5
                cache.append(city)
            else:
                answer += 5
                cache.popleft()
                cache.append(city)
    return answer

์บ์‹œ์˜ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

Least Recent Used ์บ์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์บ์‹œ๋ฅผ ๊ต์ฒดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ queue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์บ์‹œ๋Š” popleft๋ฅผ ํ†ตํ•ด ๊บผ๋‚ผ ์ˆ˜ ์žˆ์„๊ฑฐ๋ผ ์ƒ๊ฐํ•ด, ํ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋ฉฐ ์ฃผ์˜ํ•  ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ๋‹ค.

1) ์บ์‹œ ์‚ฌ์ด์ฆˆ๊ฐ€ 0์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฌธ์ œ๋ฅผ ์ž˜ ์ฝ์ž.

2) ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒˆ๋กœ ๋“ค์–ด์™”์„ ๋•Œ, ์ด๋ฏธ ์บ์‹œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ผ๋ฉด ์‹œ๊ฐ„๋งŒ 1 ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ ๋‚ด์˜ ๋ฐ์ดํ„ฐ ์œ„์น˜๋ฅผ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค. ๋‹ค์‹œ ์‚ฌ์šฉํ•œ ์บ์‹œ ์ด๋ฏ€๋กœ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ์บ์‹œ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋‹ˆ ๋ง์ด๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ (level2, python)  (0) 2022.09.09
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ ํ”„์™€ ์ˆœ๊ฐ„์ด๋™ (level2, python)  (0) 2022.09.09
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ (level3, python)  (0) 2022.09.09
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ (level2, python)  (0) 2022.09.09
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ (level2, python)  (0) 2022.09.09
    '๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ ํ”„์™€ ์ˆœ๊ฐ„์ด๋™ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ตœ๊ณ ์˜ ์ง‘ํ•ฉ (level3, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ (level2, python)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”