Programmers 가장 가까운 글자

홍왕열·2023년 5월 16일
0

코테연습

목록 보기
3/4


내가 푼 것

function solution(s) {
    let s2=s.split('');
    s=s.split('');
    
    
    for(let i=0; i<s.length; i++) {
        
            for(let j=i+1; j<s2.length; j++){
                if(s[i] === s2[j]) {
                    s2[j] = j-i;
                    break;
                }   
             }
        if(typeof(s2[i]) === 'string') s2[i] = -1
        
        
    }

    return s2
    
}

남들이 푼 것

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

간단해 보인다.

lastIndexOf() 메서드는 문자열에서 특정 문자 또는 문자열이 마지막으로 나타나는 인덱스를 반환하는 메서드

그래서 string s를 배열로 만든 후 map으로 돌려서 slice를 하는데, index까지 자르면서 그 slice에서 char와 같은 문자를 가진 index를 count에 넣는다.

만약 없으면 -1을 반환한다.

그렇기 때문에 -1 or index(확인하려는 char)에서 slice한 곳에서 char와 같은 문자열을 가진 index를 빼서 그 차이를 넣는다.

후 나는 왜 이걸 생각을 못할까.ㅠ

profile
코딩 일기장

0개의 댓글