본문 바로가기

Coding Test/프로그래머스

[프로그래머스/자바] 가장 가까운 같은 글자

import java.util.Map;
import java.util.HashMap;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        
        Map<String, Integer> map = new HashMap<>();
        String[] arr = s.split("");
        
        for(int i=0; i<arr.length; i++){
            if(map.get(arr[i]) == null){
                answer[i] = -1;
            } else answer[i] = i - map.get(arr[i]);
            map.put(arr[i], i);
        }
        
        return answer;
    }
}


import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];

        Map<String, Integer> map = new HashMap<>();
        String[] arr = s.split("");

        for(int i=0; i<arr.length; i++){
            answer[i] = i - map.getOrDefault(arr[i], i + 1);
            map.put(arr[i], i);
        }

        return answer;
    }
}

풀이2

for문에서 if문을 사용하지 않고 getOrDefault 를 이용하여 값을 갱신했다.

정확도 테스트에서 생각보다 시간은 비교적 높게 나왔다.