원하는 것은 뭐든지

99클럽 코테 스터디 24일차 TIL , 대충 만든 자판 본문

개발/문제풀이

99클럽 코테 스터디 24일차 TIL , 대충 만든 자판

댕로그😏 2024. 8. 14. 22:32
반응형

문제

풀이

입력으로 주어지는 keymap 배열에 String 들은 key 하나에 할당된 글자들이다.

한번 혹은 여러 번 클릭하여 해당 문자를 입력할 수 있다.

 

입력으로 주어지는 targets는 만들어야 할 문자열이다.

 

주어진 keymap을 가지고 최소한 몇 번을 클릭해서 targets에 있는 문자를 만들 수 있는지 배열에 담아 return 하면 된다.

 

제출 1 - 정답

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];	//정답 배열
        int[] alpha = new int[26];	//알파벳 인덱스 담을 배열
        for(int i=0;i<26;i++){
            alpha[i] = Integer.MAX_VALUE;	//모든 인덱스에 최대 값 넣어 둠
        }
        for(String key : keymap){
            char[] chrArr = key.toCharArray();	
            for(int i=0;i<chrArr.length;i++){	//array에다가 알파벳이 있는 최소 인덱스 넣음
                alpha[chrArr[i] - 'A'] = Math.min(i, alpha[chrArr[i] - 'A']);
            }
        }
        int j=0;
        for(String target : targets){
            int cnt = 0;	// 개수 세기
            char[] chrArr = target.toCharArray();
            for(int i=0;i<chrArr.length;i++){
                if(alpha[chrArr[i] - 'A'] == Integer.MAX_VALUE){	//값이 변하지 않았으면 못 만듬
                    cnt = -1;
                    break;
                }
                cnt += alpha[chrArr[i] - 'A'] + 1;	//인덱스 값 +1
            }
            answer[j++] = cnt;
        }

        return answer;
    }
}

 

알파벳 배열을 만들어 keymap을 반복문 돌아 알파벳이 가장 빠른 index를 배열에 저장하고, target은 그저 해당 배열에 값을 알파벳별로 가장 빠른 인덱스를 더해주고 담아주면 된다.

TIL

  • Spring 복습
반응형
Comments