문제
입출력 예
풀이.
1. 각 알파벳들의 최소 인덱스가 저장될 HashMap 선언
2. answer를 targets의 길이만큼 초기화 ( 처음에 keymap의 크기만큼 초기화해서 런타임에러가 났다.)
3. keymap의 길이 만큼 반복문을 돌고 이중 포문으로 각 원소들의 길이만큼 돌며 각 알파벳들의 최소 인덱스를 저장.
(값이 있다면 그냥 비교하면 되지만 알파벳 이 첫 등장이라면 map에서 가져올수가 없어 getOrDefault로 101을 넣어줬다. - 원소의 최대길이가 100이어서)
4. 각 최소 인덱스를 다 저장한후에 targets의 길이만큼 똑같이 반복문을 돌며 sum에다가 저장. ( 단, 알파벳에 대한 인덱스가 없는 경우 sum에 -1을 넣고 안쪽 for문을 break
5. 바깥쪽 for문이 반복할 때 마다 answer에 값을 넣어주고 sum을 0으로 초기화
코드
import java.util.*;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
HashMap<Character,Integer> map = new HashMap<>();
int[] answer = new int[targets.length];
for(int i=0;i<keymap.length;i++){
for(int j=0;j<keymap[i].length();j++){
if( map.getOrDefault(keymap[i].charAt(j),101) > j+1 )
map.put(keymap[i].charAt(j),j+1);
}
}
for(int i=0;i<targets.length;i++){
int sum=0;
for(int j=0;j<targets[i].length();j++){
if( map.getOrDefault(targets[i].charAt(j),0) == 0 ){
sum = -1;
break;
}else{
sum += map.get(targets[i].charAt(j));
}
}
answer[i] = sum;
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
(LEVEL 2)프로그래머스 - 오픈채팅방 (JAVA) (0) | 2023.04.10 |
---|---|
(LEVEL 2)프로그래머스 - 귤 고르기 (JAVA) (0) | 2023.03.12 |
(LEVEL 2)프로그래머스 - 2 x n 타일링 (JAVA) (0) | 2023.02.25 |
(LEVEL 2)프로그래머스 - 다리를 지나는 트럭(JAVA) (0) | 2023.02.25 |
(LEVEL 2)프로그래머스 - 카펫(JAVA) (0) | 2023.02.09 |