알고리즘

프로그래머스 - 대충 만든 자판

계양 꿀주먹 2024. 5. 7. 19:08

 


 

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        
        for(int i = 0; i < targets.length; i++) {
            int sum = 0;    // 누른 수
            boolean check = false; // target의 단어가 keymap에 존재하는지 체크 
            
            for(char c : targets[i].toCharArray()) {
                int min = 101;  // 각 targt의 char마다 최소 누른 수
                    
                for(String key : keymap) {
                    for(int j = 0; j < key.length(); j++) {
                        if(c == key.charAt(j)) {
                            min = Math.min(min, j + 1); // j는 0 , 클릭은 1부터 시작
                            break;
                        }
                    }
                }
                
                if(min == 101) check = true;
                sum += min;
            }
            
            if(check) answer[i] = -1;
            else answer[i] = sum;
        }
        
        
        return answer;
    }
}

 

각 targes에서 각 문자열의 문자를 구하고, keymap에서 배열의 원소마다 비교하여 charAt을 이용해 최소 클릭 횟수를 구하여 sum에 더해 키를 누른 횟수를 구했습니다.

 

만약 문자가 keymap에 포함되어 있지않다면 -1를 반환해야하므로, boolean 타입을 이용하여 체크해 이를 확인했습니다.