⚡문제정보
얼마전에 새로나온 문제네요
대충 요약해서 생각하면
처음 나온 글자 = -1
중복글자가 나오면 최근에 등장했던 글자와의 거리를 나타내주는
배열을 반환하면 되는 문제입니다.
저는 인덱스를 저장해줄 Map()과 정답을 반환할 array를 각각 선언해서 풀 수 있다고 생각했어요
🔍접근방법
1. 각 문자의 최근 인덱스를 알아야한다.
2. 최근 인덱스와 현재 인덱스를 비교할 수 있어야한다.
🔍나의 풀이
function solution(s) {
let answer = []
let map = new Map()
for(i=0 ; i<s.length ; i++) {
if(map.get(s[i]) == undefined ) {
answer[i] = -1
}
else {
answer[i] = i - map.get(s[i])
}
map.set(s[i] , i)
}
return answer
}
코드 설명은 아래에 적어뒀습니다.
function solution(s) {
let answer = []
//정답 저장할 배열
let map = new Map()
//각문자의 인덱스를 저장할 배열
for(i=0 ; i<s.length ; i++) {
if(map.get(s[i]) == undefined ) {
answer[i] = -1
}
//키가 없으면 answer[i]에 -1 할당
else {
answer[i] = i - map.get(s[i])
}
//키가 있다면 answer[i]에 현재 인덱스 - 최근 중복값의 인덱스
map.set(s[i] , i)
//map에 있는 문자 인덱스를 최신화해줌
}
return answer
//정답 반환
}
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 2] 오픈채팅방 Javascript (1) | 2022.12.22 |
---|---|
[Programmers Level 1] 성격 유형 검사하기 Javascript (0) | 2022.12.20 |
[Programmers Level 1 탐욕법] 체육복 Javascript (0) | 2022.12.16 |
[Programmers Level 2] 귤 고르기 Javascript (0) | 2022.12.15 |
[Programmers Level 0] 다항식 구하기 Javascript (0) | 2022.12.15 |