티스토리 뷰
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/17680
코딩테스트 연습 - [1차] 캐시
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, S
programmers.co.kr
2. 설명
캐시크기가 0일 경우엔 그냥 5씩 곱해서 return 해줌.
cache hit일 경우 LRU 알고리즘을 따라야 하므로 우선순위를 맨뒤로 두기 위해서 list에서 삭제하고 다시 삽입하는 방법으로 구현
cache miss일 경우엔 캐시에 삽입하는데, 꽉 찼을 경우엔 맨 처음에꺼 삭제하고 다시 삽입
하는 방향으로 풀었다.
3. 코드
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
int answer = 0;
ArrayList<String> cache = new ArrayList<>();
if(cacheSize == 0) // 캐시크기가 0
return cities.length * 5;
for(int i=0; i<cities.length; i++) {
cities[i] = cities[i].toUpperCase(); // 대소문자 구분X
if(cache.contains(cities[i])) { // cache hit
cache.remove(cities[i]);
cache.add(cities[i]);
answer += 1;
}
else { // cache miss
if(cache.size()==cacheSize) {
cache.remove(0);
cache.add(cities[i]);
}
else
cache.add(cities[i]);
answer += 5;
}
}
return answer;
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 [3차] 파일명 정렬 JAVA (0) | 2020.06.10 |
---|---|
프로그래머스 [3차] n진수 게임 JAVA (0) | 2020.06.05 |
프로그래머스 뉴스 클러스터링 JAVA (0) | 2020.06.03 |
프로그래머스 전화번호 목록 JAVA (0) | 2020.05.22 |
프로그래머스 오픈채팅방 JAVA (0) | 2020.05.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday