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;
}
'코딩 테스트 > test_javaScript' 카테고리의 다른 글
[코딩테스트/javaScript] 콜라 문제 (0) | 2025.01.11 |
---|---|
[코딩테스트/javaScript] 푸드 파이트 대회 (0) | 2025.01.10 |
[코딩테스트/javaScript] 두 개 뽑아서 더하기 (0) | 2025.01.08 |
[코딩테스트/javaScript] k번째 수 (0) | 2025.01.07 |
[코딩테스트/javaScript] 숫자 문자열과 영단어 ⭐️⭐️ (0) | 2025.01.06 |