-
[프로그래머스] 거리두기 확인하기코드스테이츠 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