728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17680
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
LRU 알고리즘을 이용해서
캐시 만큼 배열 요소 개수가 차면 0번 인덱스 값을 지워주고
최근 검색 중인 city가 배열에 있는지 확인 후 있으면 지워준 뒤 맨 뒤로 넣어주는 작업을 해주면 된다.
(단, city가 치사하게 대문자일 때도 있고 소문자일때도 있으니 처음에 그냥 cities를 대문자건 소문자건 싹다 바꿔준디 작업해야함)
func solution(_ cacheSize:Int, _ cities:[String]) -> Int {
let upperCities = cities.map{ String($0.uppercased()) }
var page = [String]()
var time = 0
for city in upperCities {
if page.contains(city) {
time += 1
let idx = page.firstIndex(of: city)!
page.remove(at: idx)
page.append(city)
} else {
time += 5
page.append(city)
if page.count > cacheSize {
page.removeFirst()
}
}
}
return time
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스: 월간 코드 챌린지 시즌1 - 이진 변환 반복하기 (1) | 2023.10.06 |
---|---|
프로그래머스: 기사단원의 무기 (0) | 2023.10.04 |
프로그래머스: 과일 장수 (0) | 2023.07.20 |
프로그래머스: 귤 고르기 (0) | 2023.07.16 |
프로그래머스: 멀리뛰기 (0) | 2023.07.12 |
댓글