프로그래머스 81302번. 2021년 카카오 인턴쉽 코테에서 나온 거리두기 확인하기 문제이다.
접근 방식은 도움을 받았으니 그래도 코드는 직접 짰다..
/* 
처음에는 완전탐색으로 p의 위치를 죄다 찾아서 해당 인원이 거리두기를 지키고 있는지
체크해가지고 하나씩 탈락시키려고 했었음.
하지만 문제의 접근과정을 살펴보니.... 
각 P와 X의 상태를 5X5 int배열로 나타낸다! 라는 느낌으로 풀어가더라.
*/
function solution(places) {
    
    let PList = []; // P와 X의 좌표를 끄집어 냄.
    let XList = [];
    console.log(places);
    for(let i = 0; i < places.length; i++){
        let place = places[i]; // 각 대기실
        let eachP = [];
        let eachX = [];
        for(let x = 0; x < place.length; x++){
            let line = place[x]; // 각 라인 (x)
            for(let y = 0; y < line.length; y++){
                let person = line[y]; // 각 사람 (y)
                if(person === 'P'){
                    eachP.push([x,y]);
                } else if(person === 'X'){
                    eachX.push([x,y]);
                }
            }
        }
        PList[i] = eachP;
        XList[i] = eachX;
    }
   
    let answer = [1,1,1,1,1];
    
    for(let k = 0; k < 5; k++){
        let intArr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] // 0으로 채워진 5X5 배열
    
        for(let i = 0; i < PList[k].length; i++){
            let person = PList[k][i]; // P
            let [x, y] = person; // person의 좌표
            //console.log(person)
            //console.log(x,y)
            intArr[x][y] -= 1; //P의 자리부터 --;
            if(x < 4) intArr[x+1][y]--; // 아래쪽 -- (x가 4 이상이면 자리 없음)
            if(x > 0) intArr[x-1][y]--; // 위쪽 --; (x가 0 이하면 자리 없음)
            if(y < 4) intArr[x][y+1]--; // 오른쪽--; 
            if(y > 0) intArr[x][y-1]--;  
        }
        console.log("---");
        for(let j = 0; j < XList[k].length; j++){
            let block = XList[k][j];
            let [x,y] = block;
            intArr[x][y] += 10; // X로 막은데는 10을 더해서 아예 막혀있음을 나타냄
        }
        console.log(intArr)
        
        // -2보다 작은 것들이 있는지 체크
        for(let a = 0; a < 5; a++){
            for(let b = 0; b < 5; b++){
                if(intArr[a][b] <= -2){
                    console.log(a,b)
                    answer[k] = 0;
                    break;
                }
            }
        }
    }
    
   
    return answer;
}
어... 그런데 다른 사람의 풀이도 보니깐 그냥 완전탐색으로 풀어버린 사람들도 많은거 같다 ㅋㅋㅋㅋ p위치 찾고 각 사람마다 거리두기를 지키는지?를 판단해서
역시 코테는 내가 가는 길을 안 까먹는 것이 중요한 거 같다 ㅋㅋ