거리두기 확인

dwell·2022년 3월 27일
0
function checkDistance(coor1, coor2) {
    return Math.abs(coor1[0] - coor2[0]) + Math.abs(coor1[1] - coor2[1]);
}

function checkCompliance(place) {
    const coordinates = [];
    for (let i = 0; i < place.length; i++) {
        for (let j = 0; j < place[i].length; j++) {
            if (place[i][j] === 'P') {
                coordinates.push([i,j]);
                if (coordinates.length > 0) {
                    for (let coordinate of coordinates) {
                        const distance = checkDistance(coordinate, [i,j]);
                        if (distance > 2 || distance === 0) {
                            continue;
                        } else if (distance === 1) {
                            return 0
                        } else if (distance === 2) {
                            if (coordinate[0] === i) {
                                if (j >= 1 && place[i][j-1] === 'O') {
                                    return 0
                                }
                            } else if (coordinate[1] === j) {
                                if (i < 4 && place[i+1][j] === 'O') {
                                    return 0
                                }
                            } else {
                                if (!(place[coordinate[0]][j] === 'X' && place[i][coordinate[1]] === 'X')) {
                                    return 0
                                } 
                            }
                        }
                    }
                }
            }
        }
    }
    return 1;
}


function solution(places) {
    var answer = [];
    for (let place of places) {
        answer.push(checkCompliance(place));
    }
    return answer;
}
profile
code for a change

0개의 댓글