ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 거리두기 확인하기
    코드스테이츠 43기 2023. 5. 3. 12:46
    function solution(places) {
        //맨해튼거리가 2이상일경우에는 볼 필요가 없음.
        // 2이하일 경우에는 파티션이 있는지 보기.
        // 대각선으로 있을 경우에는 좌우양옆에 파티션이 있어야하고, 가로나 세로로 있을때는 그 사이에 파티션이 있어야함.
        // 즉 P(i,j)가 있을 경우 봐야할 곳이
        // (i-1,j),(i,j-1),(i+1,j),(i,j+1) 인데 만약 X가 있을경우 그쪽방향은 더 안봐도 됨(1), 근데 P가 있어도 더 안봐도됨(0)
        // O가 있을 경우 더 봐야하는데 (i-2,j),(i,j-2),(i+2,j),(i,j+2)를 더 봐야함.
        // (i-1,j-1),(i+1,j+1),(i-1,j+1),(i+1,j-1) 여기서 인간(P)이 있다??
        // 그럼 저 상하좌우가 다 X인지 봐야함. 다 X가 아니면 (O거나 P가 있으면) 바로 1임.
        var answer = [];
        for(let idx=0;idx<5;idx++){
            let result = 1;
            let arr = places[idx]
            for(let i=0;i<5;i++){
                for(let j=0;j<5;j++){
                    if(arr[i][j]==='P'){
                        if(j+1<5){
                            if(arr[i][j+1]==='P') result = 0;
                            if(arr[i][j+1]==='O'&&j+2<5&&arr[i][j+2]==='P') result = 0;
                        }
                        if(i+1<5){
                            if(arr[i+1][j]==='P') result = 0;
                            if(arr[i+1][j]==='O'&&i+2<5&&arr[i+2][j]==='P') result = 0;
                        }
                        if(i+1<5&&j+1<5){
                            if(arr[i+1][j+1]==='P'){
                                if(arr[i][j+1]==='O'||arr[i+1][j]==='O') result = 0;
                            }
                        }
                        if(i+1<5&&j-1>=0){
                                console.log(arr[i+1][j-1])
                            if(arr[i+1][j-1]==='P'){
                                if(arr[i][j-1]==='O'||arr[i+1][j]==='O') result = 0;
                            }
                        }
                    }
                }
            }
            answer.push(result)
        }
        return answer;
    
    }

    테스트케이스 13번이 죽어라 안풀려서 엄청 고민했는데... ㅎㅎㅎ 저 조건문에서 j-1>0 즉, =을 안넣어줘서 그런거였다.

    실전에서 이러면 눈물날듯....

    '코드스테이츠 43기' 카테고리의 다른 글

    CI/CD  (0) 2023.04.03
    컴퓨터 구조  (0) 2023.03.29
    React hooks 적용하기  (0) 2023.03.24
    [2023.3.13] 섹션3 기술면접준비  (0) 2023.03.13
    [TIL] 2023.3.9.(목)  (0) 2023.03.09
Designed by Tistory.