문제 풀기/JavaScripts

문제 50. 가장 가까운 같은 글자(lastIndexOf)

kagan-draca 2024. 7. 31. 15:42

 

처음 문제를 받고,

 

function solution(s) {
    let answer = [];
    s.split('').map((element, index)=>
    {
        let position = -1;
        for(let i = index - 1; i >= 0; i--)
        {
            if(s[i] == element) 
            {
                position = index - i
                break;
            }
        }
        answer.push(position)
    })
    return answer;
}

 

위와 같이 반복문으로 현재 단어 index - 1 ~ 0까지

탐색하면서 단어가 있을 경우

position = index - i로 몇 칸 떨어져 있는지 저장하고,

break문으로 반복을 탈출하는 식으로 했다.

 

다른 사람들의 코드를 확인하니,

 

function solution(s) 

{
    return s.split('').map((element, index)=>
    {
        const count = s.slice(0, index).lastIndexOf(element);
        return count < 0 ? count : index - count;
    })
}

s.slice로 0 ~ 해당 단어 - 1까지 자른 후

lastIndexOf(찾고자 하는 단어)로

찾고자 하는 단어가 앞에 있는지 확인해줬다.

 

lastIndexOf()는

 

해당 찾고자 하는 값이 있으면 : 마지막 index

해당 찾고자 하는 값이 없으면 : -1 

 

를 반환한다.

 

이후,

count < 0으로 찾고자 하는 값이 없으면 -1

찾고자 하는 값이 있으면 index - count로 

몇 칸 앞에 있는지 반환해줬다.

 

제출한 코드 : 

 

function solution(s) {
    return s.split('').map((element, index)=>
    {
        const count = s.slice(0, index).lastIndexOf(element);
        return count < 0 ? count : index - count;
    })
}