https://school.programmers.co.kr/learn/courses/30/lessons/17680#
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
캐시크기(cacheSize : 0이상 30이하)
각 도시 이름 (대소문자 구붅을 하지 않는다)
예외 케이스를 잘 생각해야 하는 문제이다
조건이 주어졌을 때, 끝 값을 확인하고 실행 동작이 달라져야 하는지 생각해보는 습관을 가지자
Iterator<Map.Entry<String, Integer>> entry = caches.entrySet().iterator();
while(entry.hasNext()) {
Map.Entry<String, Integer> element = entry.next();
if(minI > element.getValue()) {
minI = element.getValue();
minKey = element.getKey();
}
}
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
int answer = 0;
// city이름,
if(cacheSize == 0) {
return cities.length * 5;
}
Map<String, Integer> caches = new HashMap<>();
for(int i = 0; i < cities.length; i++) {
String city = cities[i].toLowerCase();
if(caches.keySet().contains(city)) { // cache hit
answer += 1;
} else { // cache miss
if(caches.keySet().size() == cacheSize) {
int minI = Integer.MAX_VALUE;
String minKey = "";
Iterator<Map.Entry<String, Integer>> entry = caches.entrySet().iterator();
while(entry.hasNext()) {
Map.Entry<String, Integer> element = entry.next();
if(minI > element.getValue()) {
minI = element.getValue();
minKey = element.getKey();
}
}
caches.remove(minKey);
}
answer += 5;
}
caches.put(city, i); // hit을 하더라도 최근 사용 시간으로 업데이트를 해줘야 한다
}
return answer;
}
}
[프로그래머스] H-Index (0) | 2024.12.12 |
---|---|
[프로그래머스] 같은 숫자는 싫어 (0) | 2024.12.12 |
[프로그래머스] [1차] 비밀지도 (0) | 2024.12.10 |
[프로그래머스] n^2배열 자르기 (0) | 2024.12.10 |
[프로그래머스] 괄호 회전하기 (0) | 2024.12.10 |