728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/81302#fn1
문제 풀이 방법
P는 사람이 앉아있는 의미, X는 파티션, O는 빈 테이블을 의미한다.
이 문제는 멘해튼 거리가 2이하가 되면 해당 시험장은 규정이 지켜지지 않는 곳으로 정한다.
나는 이 문제를 2가지로 나눠 풀었다.
우선 P가 있는 경우와 O가 있는 경우가 있다.
P와 O는 상하좌우에 P가 있는지 확인하고 없다면 규정이 잘 지켜지고 있다는 것이다.
O의 경우는 상하좌우에 P가 2개 이상이 존재하는지 확인하고 P가 2개 이상 없다면 잘 지켜지고 있는 것이다.
참고한 코드
const solution = (places) => {
let answer = Array.from({length: places.length}, () => 1);
const one = [[0,1], [1,0], [0,-1], [-1,0]];
for(let i = 0; i < 5; i++){
let room = places[i];
for(let j = 0; j < 5; j++){
for(let h = 0; h < 5; h++){
if(room[j][h] === 'P'){
one.forEach(e => {
if(room[j+e[0]]?.[h+e[1]] === 'P'){
answer[i] = 0;
}
})
}
if(room[j][h] === 'O'){
const test = one.filter(e => {
return room[j+e[0]]?.[h+e[1]] === 'P';
})
if(test.length >= 2) answer[i] = 0;
}
}
}
}
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 연습문제 / 미로 탈출 (1) | 2023.11.21 |
---|---|
[JS] 2Level / 연습문제 / 미로 탈출 (0) | 2023.11.17 |
[JS] 2Level / 연습문제 / 무인도 여행 (0) | 2023.11.14 |
2Level / 연습 문제 / 시소 짝꿍 (1) | 2023.11.13 |
2Level / 연습 문제 / 숫자 카드 나누기 (0) | 2023.11.09 |