CS/알고리즘_KAKAO BLIND RECRUITMENT

2018 KAKAO BLIND RECRUITMENT : [1차] 캐시

Jedy_Kim 2021. 10. 15. 17:06
728x90

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", "Ro

programmers.co.kr

 

// 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.*;
import java.util.Map.Entry;
 
/*
    1. 키 : 실행시간 으로 관리한다.
    2. add전 검색 후 해당 단어가 없으면 실행시간 - 5, 있으면 실행시간 - 1
    3. 맨 처음 요소를 제거
    4. 마지막에 모두 제거
*/
 
class Solution {
 
    public int solution(int cacheSize, String[] cities) {
        
        int answer = 0;
        List<String> cache = new ArrayList<>();
        
        for(String beforeCity : cities) {
            String city = beforeCity.toLowerCase();
            
            if(cache.contains(city)) {
                //도시 이름을 참조했으므로, 다시 맨뒤로 보낸다.
                cache.remove(city);
                cache.add(city);
                
                answer += 1;
            } else if(cache.size() < cacheSize) {
                cache.add(city);
                answer += 5;
            } else {
                if(cacheSize > 0) {
                    cache.remove(0);
                    cache.add(city);
                }   
                answer += 5;
            } 
        }
        
        return answer;
    }
}
cs

 

반응형