[JS][프로그래머스 -LEVEL 2 - 거리두기 확인하기 ]

정대만·2023년 7월 24일

코딩테스트

목록 보기
31/51
post-thumbnail
function solution(places) {
    var answer = [];
    
    // 같던곳은 체크하는 함수 하나 만들고 dfs 로 가는 수박에 업는듯 
 
    const inner= function(ima_function,check_function,y,x){
        //여기서 이제 dfs 하면됨 저번에 외웠던? dfs 식으로 해보자 
        var yy=[+1,0,-1,0];
        var xx=[0,+1,0,-1]
        var hey_que=[[y,x,0]];
        
        
        check_function[y][x]=1;
     
         while(hey_que.length>0){
             var [pop_y,pop_x,number_ima]= hey_que.pop();
      
             for(var i=0 ; i<4; i++){
                 var change_y= pop_y+yy[i];
                  var change_x= pop_x+xx[i];
                 if(change_y>=0 && change_x>=0 && change_y<5&& change_x<5 && 
                  check_function[change_y][change_x]!=1 &&number_ima+1<=2&&
                   ima_function[change_y][change_x]=='O'){
                     hey_que.push([change_y,change_x,number_ima+1]);
               
                     check_function[change_y][change_x]=1;
                 }
                 if(   change_y>=0 && change_x>=0 && change_y<5&& change_x<5 &&  ima_function[change_y][change_x]=='P' && check_function[change_y][change_x]!=1 && number_ima+1<=2){
                     
                     return 1;
                 }
             }
             
         }

        
      return 0;
        
        
    }
    
    
     for(var i=0; i<places.length; i++){
         places[i].map((el,index)=>{
               places[i][index]=el.split('');
         })
           
            var check_Arr= Array.from({length:5},()=>Array(5).fill(0));
  
              const inner_go= function(go,check_Arr){
               for(var y=0; y<5; y++){
                    for(var x=0; x<5; x++){
                     if(go[y][x]=='P'){
                      
                            if( inner(go,check_Arr,y,x) ==1){
    
                                 return 1;
                              }
                }
            }
        }
                  return 0 ;
              }
              
              
               var fianl_answer=inner_go(places[i],check_Arr);

         if(fianl_answer==0){
             answer[i]=1;
         }
         else{
             answer[i]=0;
         }
         
         
         
         
        
     
         
     }
 
    
    
    return answer;
}
//solution([["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"]])
profile
안녕하세요

0개의 댓글