프로그래머스

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

jjangsh 2024. 9. 12. 22:41

문제 :

 

내 풀이 : 

function solution(s) {
    const lastIndex = {};
    const answer = [];

    for (let i = 0; i < s.length; i++) {
        if (lastIndex[s[i]] !== undefined) {
            answer.push(i - lastIndex[s[i]]);
        } else {
            answer.push(-1);
        }
        lastIndex[s[i]] = i;
    }

    return answer;
}

 

 

lastIndex 객체:

  • 각 문자의 마지막 등장 위치를 저장. lastIndex[s[i]]를 통해 해당 문자가 이전에 어디에서 등장했는지 빠르게 접근할 수 있다.

for 루프:

  • 문자열을 순회하면서 문자가 이전에 등장한 적이 있는지 확인한다. lastIndex[s[i]] !== undefined를 통해 그 문자가 처음 등장한 것인지 아닌지 확인할 수 있다.
  • 이전에 등장했다면 현재 인덱스와 마지막 등장 위치의 차이를 계산하여 answer에 저장한다. 처음 등장한 문자라면 -1을 추가한다.

마지막 등장 위치 갱신:

  • 각 문자가 처리된 후, 해당 문자의 마지막 등장 위치를 lastIndex[s[i]] = i로 갱신한다. 이렇게 하면 이후 등장할 때 정확한 이전 위치를 참조할 수 있다.