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

KimYoungWoong·2023년 3월 3일
0

Programmers

목록 보기
56/60
post-thumbnail

🚩문제 주소


📄 풀이

해시

  1. 문자열을 key로 인덱스를 value로 하는 Map 객체를 만듭니다.

  2. Map에 이미 key가 존재한다면 그 키의 인덱스를 현재 인덱스로 변경하고 정답 배열에 (현재 인덱스 - 있던 인덱스)를 삽입합니다.
    존재하지 않는다면 현재 인덱스를 저장하고 -1을 배열에 삽입합니다.

  3. 정답 배열을 반환합니다.



👨‍💻 코드

function solution(s) {
  const answer = [];
  const map = new Map();
  // 문자열을 key로 인덱스를 value로
  // 이미 인덱스가 있다면 현재 인덱스를 저장하고 현재 인덱스 - 있는 인덱스를 배열에 삽입
  // 없다면 현재 인덱스를 저장하고 -1를 배열에 삽입
  for (let i = 0; i < s.length; i++) {
    if (map.has(s[i])) {
      const prev_idx = map.get(s[i]);
      map.set(s[i], i);
      answer.push(i - prev_idx);
    } else {
      map.set(s[i], i);
      answer.push(-1);
    }
  }
  return answer;
}

profile
블로그 이전했습니다!! https://highero.tistory.com

0개의 댓글