이미 앉아 있는 사람들 중 가장 가까운 사람과 최대한 멀리 떨어져 앉을 좌석.. 그게 뭔데..
dist 라는 배열 생성
만약, 좌석[0]=1 이라면 그곳은 이미 사람이 앉아 있는 것이므로 d=1000해주어 dist=1000으로 들어간다. (이미 들어간 값은 d=0으로 교체)
좌석[1]=0 이라면 아무도 앉지 않는 좌석이다. dist[1]=d++;
앉은 사람 중에 좌석을 계속 추가해서 나가는 것이다.
[예매][NO예매] [NO예매][NO예매] [예매] 라면,
1000 1 2 3 0 이 dist 배열 안에 들어간다.
먼저 → 이 방향으로 진행해주고,
다음으로 ← 이 방향으로 진행해주어야 한다.
만약, dist에 값이 존재한다면 가장 min 값을 계산해서 넣는다.
function solution(seat){
let n=seat.length
let dist=new Array(n).fill(0);
let answer=0;
let d=1000;
for(let i=0;i<n;i++){
// 정방향으로 가는 경우
if(seat[i]===1){
d=0;
dist[i]=d;
}
else{
d++;
dist[i]=d;
}
}
// 역방향으로 가는 경우
for(let i=n-1;i>=0;i--){
if(seat[i]===1){
d=0;
dist[i]=d;
}
else{
d++;
dist[i]=Math.min(dist[i],d);
}
}
answer=Math.max(...dist);
return answer;
}
console.log(solution([1,0,0,0,1,0,0,1,0,1]));