[프로그래머스]가장 가까운 같은 글자 (javascript,자바스크립트)

스카치·2023년 3월 8일
0

문제

풀이 1

이중 for문을 이용한 풀이

function solution(s) {    
    var answer = [];
    let str = '';
    
    for (let i=0; i<s.length; i++) {
        
        if (str.indexOf(s[i]) === -1) {
            str += s[i]
            answer.push(-1)
        }
        else {
            for (let strI=str.length-1; strI>=0; strI--){
                if (str[strI] === s[i]) {
                    answer.push(i-strI);
                    str += s[i]
                    break;
                };
            };
        };
    };   
    return answer;
    
}

풀이 2

lastIndexOf 메소드를 활용한 풀이

function solution(s) {

var answer = [];   
    let str = '';
    
    for (let i=0; i<s.length; i++) {
        
        if (str.indexOf(s[i]) === -1) {
            str += s[i]
            answer.push(-1)
        }
        else {
            answer.push(i - str.lastIndexOf(s[i]))
            str += s[i]
        };
    };  
    return answer;
}

풀이 3

해시를 이용한 풀이

function solution(s) {
    const hash={};

    return [...s].map((v,i)=>{
        let result = hash[v] !== undefined ? i - hash[v] : -1;
        hash[v] = i;
        return result;
    });
}

풀이 4

const solution = (s) =>
  [...s].map((char, i) => {
    const count = s.slice(0, i).lastIndexOf(char);
    return count < 0 ? count : i - count;
  });

0개의 댓글