#유형 : 구현, 문자열

#난이도 : lv2

# 카카오 기출들은 문제 설명이 어려워 보이지만, 풀어보면 기대만큼 어렵지 않다. 

# 배열리스트에 조건을 따져가며 구현하였다. LRU를 구현해주기 위해, 똑같은 입력이 들어올 때, 해당 문자열을 배열에서 제거하고 맨 뒤에 다시 추가해주면서 구하였다.

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
import java.util.*;
 
class Solution {
    public int solution(int cacheSize, String[] cities) {
        int answer = 0;
        ArrayList<String> arrList = new ArrayList();
        
        if(cacheSize == 0){
            answer = cities.length * 5;
        }else{
            String tmp = cities[0].toLowerCase();
            arrList.add(tmp);
            answer += 5;
            for(int i=1; i<cities.length; i++){
                tmp = cities[i].toLowerCase();
                if(arrList.contains(tmp)){
                    arrList.remove(tmp);
                    arrList.add(tmp);
                    answer += 1;
                }else{
                    if(arrList.size() == cacheSize){
                        arrList.remove(0);
                        arrList.add(tmp);
                        answer += 5;
                    }else{
                        arrList.add(tmp);
                        answer += 5;
                    }
                }
            }
        }
        
        
        
        
        return answer;
    }
}
cs

+ Recent posts