
😎풀이
s 순회
1-1. 현재 문자가 이전 등장하지 않았다면, 처음 등장 시점의 인덱스 기록
1-2. 이전 등장했다면, 이전 인덱스에서 현재 인덱스 - 1을 뺀 실제 거리를 계산
1-3. 해당 알파벳의 유효 거리를 계산
1-4. 실제 거리와 동등비교 일치하지 않는다면, false 반환
- 모든 단어가
distance에 해당하는 거리를 유지하므로 true 반환
function checkDistances(s: string, distance: number[]): boolean {
const map = new Map()
for(let i = 0; i < s.length; i++) {
const cur = s[i]
if(!map.has(cur)) {
map.set(cur, i)
continue
}
const prevIdx = map.get(cur)
const gap = i - prevIdx - 1
const curCodeIdx = cur.charCodeAt(0) - 97
const curDist = distance[curCodeIdx]
if(gap !== curDist) return false
}
return true
};