LRU 라서 또 큐로 풀어주고 테스트케이스는 모두 통과했지만 제출하여 틀림
/**
* 총 실행시간
*
* @param cacheSize 캐시크기 (0~30)
* @param cities 도시이름 (최대 100,000개)
* @return 실행시간
*/
public static int solution(int cacheSize, String[] cities) {
int answer = 0;
Queue<String> q = new LinkedList<>();
for (String city : cities) {
city = city.toLowerCase();
if (cacheSize <= 0) {
answer += 5;
} else if (q.size() < cacheSize) {
q.offer(city);
answer += 5;
} else if (q.size() == cacheSize) {
if (q.contains(city)) {
answer++;
} else {
q.remove();
q.offer(city);
answer += 5;
}
}
}
return answer;
}
이 코드에서도 내가 실수 한 점이 있다
큐에서 이미 도시를 포함하고 있을때 이전에 큐에 내용에 있던 도시는 지우고 다시 입력을 해야한다는 점이다
if (q.contains(city)) { // cache hit
q.remove(city);
q.add(city);
answer++;
}