[프로그래머스] 가장 가까운 같은 글자 - getOrDefault()

AI·2025년 1월 2일
import java.util.Arrays;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        //알파벳 배열 -> -1로 초기화하고 나오면 위치값을 저장 -> 동일한 알파벳이 나오면(-1이 아니면) {현재 위치-저장된 값} 출력 후 현 위치 저장 
        int[] word = new int[26];
        Arrays.fill(word,-1);
        
        for(int i=0;i<s.length();i++){
            int index = s.charAt(i) - 'a';
            //word 값이 -1이면 현재 위치 넣고 아니면 {현재 위치-값} 넣기
            if(word[index] == -1){
                answer[i] = word[index];
                word[index] = i;
            } 
            else{
                answer[i] = i-word[index];
                word[index] = i;
            } 
        }
        
        return answer;
    }
}

다른 방법으로 HashMap을 사용하여 getOrDefault를 사용할 수 있다.

        HashMap<Character,Integer> map = new HashMap<>();
        for(int i=0; i<s.length();i++){
            char ch = s.charAt(i);
            answer[i] = i-map.getOrDefault(ch,i+1);
            map.put(ch,i);
        }

map에서 ch값을 가져온다.
만약 map에 ch값이 없다면 i+1을 가져온다.
i-ch값 혹은 i-(i+1)로 현위치에서 그 전 위치값을 빼거나 없으면 -1이 출력되게 한다.
put을 통해 map의 값을 업데이트 한다.

0개의 댓글