Muscardinus

거리두기 확인하기 본문

알고리즘 문제/[프로그래머스] Lv2

거리두기 확인하기

Muscardinus 2022. 1. 28. 22:50
728x90

https://programmers.co.kr/learn/courses/30/lessons/81302#fn1

 

코딩테스트 연습 - 거리두기 확인하기

[["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1]

programmers.co.kr

function solution(places) {
    const answer = [];
    for (let i = 0; i < places.length; i++) {
        answer.push(valid_check(places[i]));
    }
    return answer;
}

function valid_check(place) {
    place = place.map(p => p.split(""));
    for (let row = 0; row < 5; row++) {
        for (let col = 0; col < 5; col++) {
            if (place[row][col] === "P") {
                // 가로 한칸
                if (col < 4 && place[row][col + 1] === "P") return 0;
                // 가로 두칸
                if (col < 3 && place[row][col + 2] === "P" && place[row][col + 1] === "O") return 0;
                // 세로 한칸
                if (row < 4 && place[row + 1][col] === "P") return 0;
                // 세로 두칸
                if (row < 3 && place[row + 2][col] === "P" && place[row + 1][col] === "O") return 0;
                // 아래 왼쪽 대각
                if (row < 4 && place[row + 1][col - 1] === "P") {
                    if (place[row + 1][col] === "O" || place[row][col - 1] === "O") return 0;
                }
                // 아래 도른쪽 대각
                if (row < 4 && place[row + 1][col + 1] === "P") {
                    if (place[row + 1][col] === "O" || place[row][col + 1] === "O") return 0;
                }
            }
        }
    }
    return 1;
}
728x90

'알고리즘 문제 > [프로그래머스] Lv2' 카테고리의 다른 글

양궁대회  (0) 2022.03.27
순위검색  (0) 2022.02.02
행렬 테두리 회전하기  (0) 2022.01.23
[3차] 방금그곡  (0) 2021.02.10
[3차] 압축  (0) 2021.02.07
Comments