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 |