프로그래밍/Algorithm

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

일단개그하다 2022. 12. 14. 01:03

문제

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

접근 방법 및 풀이

문자열 0번째부터 진행 하면서 앞쪽의 같은 문자의 유무를 탐색하게 되면 이중 루프로 구현을 해야 하며 그렇게 된다면 최악의 시나리오에서 효율성이 좋지 않음

문자열을 0번째부터 그 문자와 index를 저장하는 Map을 활용하여 현재 index와 해당 문자의 바로 전 index를 Map에서 조회하여 처리

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

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

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

        for (int i = 0; i < length; i++) {
            String temp = strings[i];
            if (!indexMap.containsKey(temp)) {
                answer[i] = -1;
            } else {
                int index = indexMap.get(temp);
                answer[i] = i - index;
            }

            indexMap.put(temp, i); // 인덱스 갱신
        }

        return answer;
    }
}