CODING/스파르타 내일배움캠프 TIL

52_가장 가까운 같은 글자_25.3.10(월)

codingTrip 2025. 3. 10. 21:07

코드카타

50) 가장 가까운 같은 글자

나의 풀이

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        answer[0] = -1;
        for (int i = 1; i < s.length(); i++) {
            for (int j = i-1; j >= 0; j--) {
                if (s.charAt(i) == s.charAt(j)) {
                    answer[i] = i - j;
                    break;
                } else {
                    answer[i] = -1;
                }
            }
        }
        return answer;
    }
}

for문을 2개 만들었다...

사실 이 방법이 내키지는 않았지만 그 이상의 생각이 어려웠다.

 

다른 분들의 풀이

import java.util.*;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        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);
        }
        return answer;
    }
}

map에서 getOrDefault를 사용하셨다.