문제링크

문제풀이


function solution(rectangle, characterX, characterY, itemX, itemY) {
    let answer =0;
    let dx=[1,0,-1,0];
    let dy=[0,1,0,-1];
    let queue=[];
    characterX*=2;
    characterY*=2;
    itemX*=2;
    itemY*=2;
    let road=Array.from({length:102},()=>Array(102).fill(0));
    let ch=Array.from({length:102},()=>Array(102).fill(0));
    let dis=Array.from({length:102},()=>Array(102).fill(0));
    rectangle.forEach((rec)=>{
        let [x1,y1,x2,y2]=rec.map((it)=>it*2);
        for(let x=x1;x<=x2;x++){
            for(let y=y1;y<=y2;y++){
                if(x===x1||x===x2||y===y1||y===y2){
                    if(!road[y][x]){
                        road[y][x]=1;
                    }
                }else{
                        road[y][x]=2;
                    }
            }
        }
    });
    queue.push([characterY,characterX]);
    ch[characterY][characterX]=1;
    while(queue.length){
        let [y,x]=queue.shift();
        if(y===itemY && x===itemX){
            break;
        }
        for(let i=0;i<4;i++){
            let y1=y+dy[i];
            let x1=x+dx[i];
            if(road[y1][x1]===1 && ch[y1][x1]===0){
                queue.push([y1,x1]);
                ch[y1][x1]=1;
                dis[y1][x1]=dis[y][x]+1;
            }
        }
    }
    return dis[itemY][itemX]/2;
}
profile
코딩 잘하고 싶음..

0개의 댓글

관련 채용 정보