안녕하세요

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

프로그래머스/Lv.1

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

sakuraop 2023. 1. 15. 17:31

가장 가까운 같은 글자

입출력 예sresult
"banana" [-1, -1, -1, 2, 2, 2]
"foobar" [-1, -1, 1, -1, -1, -1]

문제 요약

 

banana

처음 나온 글자는 -1로 표시

b => -1

a => -1

n => -1

 

두번째 부터는 앞에 나온 글자와의 간격 표시

a => 2칸 앞

n => 2칸 앞

a => 2칸 앞


1. 처음 나왔다면 answer 배열에 -1 추가
 
    if (!Object.keys(alphabet).includes(el)) {
      answer.push(-1);
 
 

2. 처음 나온 문자와 문자의 index를 alphabet Object에 추가
=> {b:0}
 
      alphabet[el] = index;
 
 

3. 처음 나온 문자가 아니라면 answer에 (현재 index - alphabet Object)에 있는 해당 문자의 인덱스를 추가
banana
현재인덱스 5, 앞에 나온 인덱스 3
=> (5-3)을 배열에 추가
 
      answer.push(index - alphabet[el]);
 
 

4. lphabet Map의 index를 현재 index로 업데이트
{n:3} => {n:5}

      alphabet[el] = index;

 



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

  s.split("").forEach((el, index) => {
    if (!Object.keys(alphabet).includes(el)) {
      answer.push(-1);
      alphabet[el] = index;
    } else {
      answer.push(index - alphabet[el]);
      alphabet[el] = index;
    }
  });

  console.log(answer);
  return answer;
}

solution("banana");