
나의풀이
function solution(str, t) {
let indices = [];
let result = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === t) {
indices.push(i);
}
}
for (let i = 0; i < str.length; i++) {
const distances = indices.map(index => Math.abs(index - i));
result.push(Math.min(...distances));
}
return result;
}
best solution
function solution(str, t) {
let result = new Array(str.length).fill(Infinity);
let lastTIndex = -Infinity;
for (let i = 0; i < str.length; i++) {
if (str[i] === t) {
lastTIndex = i;
}
result[i] = i - lastTIndex;
}
lastTIndex = Infinity;
for (let i = str.length - 1; i >= 0; i--) {
if (str[i] === t) {
lastTIndex = i;
}
result[i] = Math.min(result[i], lastTIndex - i);
}
return result;
}

나의답안
function solution(str) {
let cnt=1;
let result=[];
for (let i = 0; i < str.length; i++) {
if(str[i+1]===str[i]) cnt++;
else
{
result.push(str[i]);
if(cnt>1)result.push(cnt);
cnt=1;
}
}
return result.join('')
}