문제: https://programmers.co.kr/learn/courses/30/lessons/17680
queue의 왼쪽은 가장 사용되지 않은 것들, 오른쪽은 최근에 사용된 것들을 유지했습니다.
0일 때에는 queue에 관계없이 cache miss처리를 하였습니다.
import Foundation
func solution(_ cacheSize:Int, _ cities:[String]) -> Int {
var result = 0
var queue = [String]()
for city in cities {
let city = city.lowercased()
if queue.contains(city) { // hit
result += 1
queue.remove(at: queue.firstIndex(of: city)!)
} else { // miss
result += 5
if cacheSize == 0 {
continue
}
if queue.count >= cacheSize {
queue.removeFirst()
}
}
queue.append(city)
}
return result
}
'알고리즘' 카테고리의 다른 글
[Swift] 백준 2805번 나무 자르기 (0) | 2022.03.17 |
---|---|
[Swift] 프로그래머스 - 카카오 길 찾기 게임 (0) | 2022.03.04 |
[Swift] 프로그래머스 - 카카오 다트 게임 (0) | 2022.02.28 |
[Swift] 4가지 방법의 피보나치 함수 (0) | 2022.02.28 |
[Swift] LeetCode - 134. Gas Station (0) | 2022.02.28 |
댓글