[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ]์บ์‹œ/Python - Lv.2

2025. 2. 21. 14:51ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/17680?language=python3

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 17.5 MB, ์‹œ๊ฐ„: 64.21 ms

 
 

๋ฌธ์ œ ์„ค๋ช…

 

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

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

โœ๐Ÿปํ’€์ด

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

์šฐ์„  ์บ์‹œ๋ž€ ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ๋ฅผ ๋งํ•œ๋‹ค. ๋ฏธ๊ฐ€๊ณต ๋ฐ์ดํ„ฐ ๋˜๋Š” 1์ฐจ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“์œผ๋ฉด ๊ณ„์‚ฐ์ด๋‚˜ ์ ‘๊ทผ ์‹œ๊ฐ„์—†์ด ๋” ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ LRU์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. LRU๋Š” ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์‚ฌ์šฉ๋œ ์ง€ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์•ž์œผ๋กœ๋„ ์‚ฌ์šฉ ํ™•๋ฅ ์ด ๋‚ฎ๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ฆ‰, ์บ์‹œ๊ฐ€ ๊ฐ€๋“ ์ฐจ์„œ ๋” ์ด์ƒ ๊ณต๊ฐ„์ด ์—†์„ ๋•Œ, ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์„œ ์—†์• ์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ์บ์‹œ ์•ˆ์— ์ฐธ์กฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๊ณ  ํ˜„์žฌ์˜ ๊ฐ’์„ ์บ์‹œ์— ๋„ฃ๋Š”๋‹ค. ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์žฅ ์ตœ๊ทผ ์œ„์น˜๋กœ ๋„ฃ๋Š”๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๋กœ ๋Œ์•„๊ฐ€ LRU ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋ฐ”๋กœ ํ๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € ํ์˜ ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ๋ฅผ cacheSize๋กœ ์ •์˜ํ•˜์—ฌ ํ๊ฐ€ ๋‹ค ์ฐพ์„ ๋•Œ ์•Œ์•„์„œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋„๋ก ํ•œ๋‹ค. ์ฆ‰, ์บ์‹œ ์•ˆ์— ํ•ด๋‹น ๋„์‹œ๊ฐ€ ์—†๊ณ  ๋‹ค ์ฐจ ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์ง‘์–ด๋„ฃ์„ ๋•Œ ์•Œ์•„์„œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฏธ ํ•ด๋‹น ๋„์‹œ๊ฐ€ ํ์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ํ•ด๋‹น ๋„์‹œ๋ฅผ ํ์—์„œ ์ง€์šฐ๊ณ  ํ์— ๋‹ค์‹œ ๊ทธ ๋„์‹œ๋ฅผ ๋„ฃ์œผ๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ ์œ„์น˜๋กœ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ์—์„œ cache hit์˜ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ๊ฐ„์€ 1์ด๊ณ , cache miss๋Š” 5๋ผ๊ณ  ํ–ˆ๋‹ค. cache hit์€ ์บ์‹œ ์•ˆ์— ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•˜๊ณ  cache miss๋Š” ์บ์‹œ ์•ˆ์— ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์œ„์˜ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•  ๋•Œ answer๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

from collections import deque

def solution(cacheSize, cities):
    answer = 0
    cache = deque(list(), cacheSize)
    
    for c in cities:
        city = c.lower()
        if city not in cache:
            cache.append(city)
            answer += 5
        else:
            cache.remove(city)
            cache.append(city)
            answer += 1
    
    return answer

๐Ÿ“ํ›„๊ธฐ

์ปดํ“จํ„ฐ ๊ตฌ์กฐ ์‹œํ—˜๋ณด๊ณ  cache hit, cache miss๋ฅผ ํ•˜๋„ ๋งŽ์ด ๋“ค์–ด์„œ ๋ณด๊ธฐ ์‹ซ์–ด์„œ ์•ˆ ๋ดค๋Š”๋ฐ ์ง€๊ธˆ ๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 1655. ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”/Python - Gold2  (0) 2025.02.26
[๋ฐฑ์ค€] 1715. ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ/Python - Gold4  (0) 2025.02.26
[๋ฐฑ์ค€] 18870. ์ขŒํ‘œ ์••์ถ•/Python - Silver2  (0) 2025.02.19
[๋ฐฑ์ค€] 2206. ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ/Python - Gold 3  (0) 2025.02.12
[๋ฐฑ์ค€] 16928. ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„/Python - Gold5  (0) 2025.02.10
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 1655. ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”/Python - Gold2
  • [๋ฐฑ์ค€] 1715. ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ/Python - Gold4
  • [๋ฐฑ์ค€] 18870. ์ขŒํ‘œ ์••์ถ•/Python - Silver2
  • [๋ฐฑ์ค€] 2206. ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ/Python - Gold 3
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (159)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (76)
        • Algorithms (68)
        • SQL (7)
      • Infra (7)
      • Cloud (22)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (13)
      • Linux (26)
      • NGINX (1)
      • CICD (3)
      • IaC (2)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Linux
    Shell Script
    Shell
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    network
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ์˜ค๋ธ”์™„
    ๋ฆฌ๋ˆ…์Šค
    programmers
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    ๋ฐฑ์ค€
    ๋„์ปค
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    ๋„คํŠธ์›Œํฌ
    K8s
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    Java
    Baekjoon
    bfs
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    Kubernetes
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์ž๋ฐ”
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    docker
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    dfs
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ]์บ์‹œ/Python - Lv.2
์ƒ๋‹จ์œผ๋กœ

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