프로그래머스

자바스크립트 가장 가까운 같은 글자

늘곰's 2023. 9. 25. 22:41
//가장 가까운 같은 글자

// s[n] 값이 자신보다 앞에 나왔으면서 자신과 가장 가까운 곳에 있는 같은 글자가 어디있는지 찾는것
// s[n] 보다 앞에 같은 글자가 없으면 -1 있으면 가장 가까운 칸의 위치
// 만약 s[i] 가 answer 안에 없다면 answer.push() / includes 사용
// const str = "banana";
// console.log(str.indexOf('a'));        // 1 (첫 번째 'a'의 인덱스)
// console.log(str.lastIndexOf('a'));    // 5 (마지막 'a'의 인덱스)

function solution(s) {
  var answer = [];
  var arr = [];
  for (let i = 0; i < s.length; i++) {
    //console.log(s[i]);
    // let index = s.lastIndexOf(s[i]); b:0 a:5 n:4 a:5 n:4 a:5
    //console.log(index);
    if (!arr.includes(s[i])) {
      arr.push(s[i]);
      answer.push(-1);
    } else {
      answer.push(arr.length - arr.lastIndexOf(s[i]));
      //이코드랑 arr.push(s[i]) 랑 위치를 바꾸면 [ -1, -1, -1, 1, 1, 1 ] 됨
      // arr = [b, a, n, a] 4(answer의length 개수)-3(마지막 a의 index)
      // arr = [b, a, n, a, n] 5(answer의length 개수)-4(마지막 n의 index)
      // 이런식으로 전개되기 때문에 arr.push(s[i]);가 먼저 오면 안됨
      arr.push(s[i]);
    }
  }
  //console.log(arr);
  //console.log(answer);
  return answer;
}

console.log(solution("banana"));