ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€-Swift

μΊμ‹œ - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€(Swift)

CheonD 2022. 10. 11. 13:18

μΊμ‹œ - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€(Swift)

 

 

 λ¬Έμ œ μ„€λͺ…

 

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

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

 

 λ‚˜μ˜ 풀이

 

μ²˜μŒμ— LRUμ•Œκ³ λ¦¬μ¦˜μ΄ κ°€μž₯ 였래된 것을 κ΅μ²΄ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³  μƒκ°ν–ˆλŠ”λ° 이 μ•Œκ³ λ¦¬μ¦˜μ˜ 핡심은 기쑴에 μ•ˆμ— 있던 값이 또 μ°Έμ‘°ν•˜κ²Œ λœλ‹€λ©΄ κ°€μž₯ μ΅œμ‹ μΈ μƒνƒœλ‘œ λ³€κ²½ν•˜λŠ” 것이 핡심이닀.

즉 3개의 μΊμ‹œκ³΅κ°„μ΄ μžˆμ„λ•Œ 1->2->3->2->4 κ°€ λ“€μ–΄μ˜¨λ‹€λ©΄ 2κ°€λ“€μ–΄μ˜¬λ•Œ 1->2->3이 μ•„λ‹Œ 1->3->2κ°€ λ˜μ–΄ 2κ°€ κ°€μž₯ λ§ˆμ§€λ§‰μ— λ‚˜κ°€κ²Œ λœλ‹€.

 

func solution(_ cacheSize:Int, _ cities:[String]) -> Int {
    var caches: [String] = []
    var time: Int = 0
    if cacheSize == 0 {
        return 5*(cities.count)
    }
    for city in cities {
        if caches.contains(city.lowercased()) {
            let idx = caches.firstIndex(of: city.lowercased())!
            caches.remove(at: idx)
            caches.append(city.lowercased())
            time += 1
        } else {
            if caches.count == cacheSize {
                caches.removeFirst()
            }
            caches.append(city.lowercased())
            time += 5
        }
    }
    
    return time
}

 

 

 ν”Όλ“œλ°±

 

λ°°μ—΄μ—λŠ” removeFirst(), removeLast()κ°€ μ‘΄μž¬ν•œλ‹€. 

λ°°μ—΄μ—μ„œ firstIndex()λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άμ„λ•ŒλŠ” 인자둜 ofλ₯Ό μ€˜μ•Όν•œλ‹€.