본문 바로가기
Algorithm

SwiftUI: [1차] 캐시

by songmoro 2024. 4. 3.
728x90

프로그래머스 [1차] 캐시

 

주어진 배열에 LRU 캐시 교체 알고리즘을 사용해서 소요 시간을 구하는 문제입니다.

 

문자열이 대소문자 구분 없이 들어있고, 캐시 사이즈는 0인 것을 주의하면 됩니다.

 

func solution(_ cacheSize:Int, _ cities:[String]) -> Int {
    var cache: [String] = []
    
    return cities.map({ $0.lowercased() }).reduce(into: 0) { time, city in
        if cache.contains(city) {
            cache = cache.filter({ $0 != city })
            time += 1
        }
        else {
            time += 5
        }
        
        cache.append(city)
        cache = cache.suffix(cacheSize)
    }
}

//    캐시크기(cacheSize)    도시이름(cities)    실행시간
//    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
// cache = [jeju], [jeju, pangyo], [pangyo, newyork], [pangyo, newyork]
// time  =      5,             10,                15,                16
//    0    ["Jeju", "Pangyo", "Seoul", "NewYork", "LA"]    25
728x90

'Algorithm' 카테고리의 다른 글

Swift 알고리즘 관련 문법  (0) 2025.03.30
SwiftUI: [1차] 뉴스 클러스터링  (0) 2024.04.04
SwiftUI: 의상  (0) 2024.04.02
SwiftUI: H-Index  (0) 2024.04.02
SwiftUI: 가장 큰 수  (0) 2024.03.26