원하는 것은 뭐든지
99클럽 코테 스터디 24일차 TIL , 대충 만든 자판 본문
반응형
문제
풀이
입력으로 주어지는 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 복습
반응형
'개발 > 문제풀이' 카테고리의 다른 글
99클럽 코테 스터디 26일차 TIL , 달리기 경주 (0) | 2024.08.16 |
---|---|
99클럽 코테 스터디 25일차 TIL , Evaluate Division (0) | 2024.08.16 |
99클럽 코테 스터디 23일차 TIL , 마법의 엘리베이터 (0) | 2024.08.13 |
99클럽 코테 스터디 22일차 TIL , 멀리 뛰기 (0) | 2024.08.12 |
99클럽 코테 스터디 21일차 TIL , 피보나치 수 (0) | 2024.08.11 |
Comments