코딩 테스트/test_javaScript

[코딩테스트/javaScript] 가장 가까운 같은 글자

ijooha 2025. 1. 9. 13:26

function solution(s) {
    let answer = [];
    
    s.map((char, ind) => {
        if (answer.include(char) {
            answer.push(ind - s.indexOf(char));
        } else {
          answer.push(-1)
          })
    })
    return answer;
}

틀렸다.

자세히 보니, 우선 같은 글자가 있어도 indexOf는 제일 처음 나온 것만 인식함

indexOf 말고 해당 요소를 모두 찾을 수 있는 메소드가 있나 봐야겠다.

 

filter

array.filter((element, index, array) => {condition});

너무 길어질 거 같아서.. 알아만 두기로.. 다른 방법을 생각해보자

 

마지막으로 발견되는 알파벳의 인덱스를 어디 저장해놔야겠다.

배열로 저장하려다가, 또 너무 복잡해질 거 같아서

아직 어려운 객체를 사용해보기로 함..

 

includes는 문자열, 배열에서만 사용 가능

객체에선 다음과 같은 메소드를 사용한다.

Object.keys() 객체의 키들을 배열로 변환 Object.keys(obj).includes('b')
Object.values() 객체의 값들을 배열로 변환 Object.values(obj).includes(2)
Object.entries() + .some() 객체의 키-값 쌍에서 특정 조건에 맞는 키-값 찾기 Object.entries(obj).some(([k,v]) => k==='b' && v===2)
in 객체 특정 키가 존재하는지 확인 'b' in obj

 

객체 key의 값을 데려오기 위해서는

객체[key] 를 써야 한다.

 

function solution(s) {
    let answer = [];
    let lastIdx = {};
    
    for (let i=0; i<s.length; i++) {
        let char = s[i];
        
        if (Object.keys(lastIdx).includes(char)) {
            answer.push(i - lastIdx[char]);
        } else {
            answer.push(-1);
        }
        
        lastIdx[char] = i;
    }
    return answer;
}