Lennon FE

[프로그래머스] 거리두기 확인하기 (javascript) 본문

🔥 Algorithm/Programmers

[프로그래머스] 거리두기 확인하기 (javascript)

Lennon 2021. 9. 25. 17:53
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/81302?language=javascript 

 

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

[["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) {
    let answer = [];
    let count = 0;
    for(let i = 0; i < places.length; i++){
        Loop :
        for(let j = 0; j < places[i].length; j++){
           if(places[i][j].includes("PO")){
               let res = places[i][j].indexOf("PO");
               if(j < 4 && (places[i][j+1].indexOf("OP") === res || places[i][j+1].indexOf("XP") === res)){
                   count++;
               }
           } 
           if(places[i][j].includes("PX")){
               let res = places[i][j].indexOf("PX");
               if(j < 4 && places[i][j+1].indexOf("OP") === res){
                   count++;
               }
           } 
           if(places[i][j].includes("OP")){
               let res = places[i][j].indexOf("OP");
               if(j < 4 && (places[i][j+1].indexOf("PO") === res || places[i][j+1].indexOf("PX") === res)){
                   count++;
               }
           } 
           if(places[i][j].includes("XP")){
               let res = places[i][j].indexOf("XP");
               if(j < 4 && places[i][j+1].indexOf("PO") === res){
                   count++;
               }
           } 
           if(places[i][j].includes("PP") || places[i][j].includes("POP")){
               count++;
           }
           for(let k = 0; k < 3; k++){
               if(places[i][k][j] === "P" && places[i][k+1][j] === "O" && places[i][k+2][j] === "P"){
                   count++;
               }
           }
           for(let k = 0; k < 4; k++){
               if(places[i][k][j] === "P" && places[i][k+1][j] === "P"){
                   count++;
               }   
           }
        }
        if(count === 0){
            answer.push(1);
        }
        else answer.push(0);
        count = 0;
    }
    
    return answer;
}

단순하게 안 되는 경우들을 모두 탐색해 안 되는 게 한 개라도 있으면 0 아니면 1을 리턴하도록 했다. 

 

##########################################################################

https://parkparkpark.tistory.com/27

 

[프로그래머스] 거리두기 확인하기 (js)

https://programmers.co.kr/learn/courses/30/lessons/81302?language=javascript 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO",..

parkparkpark.tistory.com

코드 개선 업로드

728x90
반응형
Comments