본문 바로가기
CS/알고리즘

[연습문제] PGS lv1. 가장 가까운 같은 글자

by westpearl 2025. 9. 10.
728x90
반응형
SMALL

문제설명 : 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.

 

 

이전에 풀었던 코드

function solution(s) {
    var answer = [];
    const arr = s.split('');
    arr.forEach((alpha,i)=>{
        const gap = arr.slice(0,i).lastIndexOf(alpha);
        if(gap===-1){
            answer.push(gap);
        }else{
            answer.push(i-gap);
        }
    })
    return answer;
}

 

매 for문마다 lastIndexOf를 해서 index를 찾음

 

개선된 코드 : 해시맵을 사용하여 최근 등장 위치만 기억

 

function solution(s) {
  const lastSeen = {};  // 문자: 마지막 인덱스
  const result = [];

  for (let i = 0; i < s.length; i++) {
    const char = s[i];

    if (lastSeen[char] === undefined) {
      result.push(-1);
    } else {
      result.push(i - lastSeen[char]);
    }

    lastSeen[char] = i;
  }

  return result;
}
LIST