Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 스코프
- suspense react-query
- 구름톤
- suspense 동작원리
- 백준 2108 자바스크립트
- 사용성 개선
- 프로그래머스 문자열 압축
- 옵셔널체이닝
- 자바스크립트 문자열 압축
- js
- emtion app router
- emotion RSC
- 백준 1339번 js
- js 스코프
- app router emotion
- js 문자열 압축
- TypeError: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more:
- js 거리두기 확인하기
- 리액트쿼리 suspense
- 프로그래머스 거리두기 확인하기
- 백준 2108 nodejs
- next13 emotion
- 카카오 코테
- 구름톤 챌린지 회고
- 구름톤 챌린지
- 자바스크립트 스코프
- suspense 병목현상
- 백준 1339번 nodejs
- 백준 1339번 자바스크립트
- suspense 비동기
Archives
- Today
- Total
Lennon FE
[프로그래머스] 거리두기 확인하기 (js) 본문
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) {
const leng = places[0].length;
return places.map(v => {
let check = 1;
Loop2 :
for(let j = 0; j < leng; j++){
if(v[j].includes('PP') || v[j].includes('POP')) {
check = 0;
break;
}
for(let k = 0; k < leng; k++){
if(j < leng-2 && v[j][k]==='P' &&
v[j+1][k]==="O" && v[j+2][k]==="P") {
check = 0;
break Loop2;
} // 세로 POP
else if(j < leng-1 && v[j][k]==='P' && v[j+1][k]==="P") {
check = 0;
break Loop2;
} // 세로 PP
else if(j < leng-1 && k < leng -1 && (v[j][k]==='P' && v[j+1][k+1]==='P') &&
(v[j+1][k]==='O' || v[j][k+1]==='O')) {
check = 0;
break Loop2;
} // 대각선 PO PX PO
// OP OP XP
else if(j < leng-1 && k < leng -1 && (v[j][k+1]==='P' && v[j+1][k]==='P') &&
(v[j][k]==='O' || v[j+1][k+1]==='O')) {
check = 0;
break Loop2;
} // 반대 대각선 OP XP OP
// PO PO PX
}
}
return check;
})
}
결과값이 배열형태라 map으로 바로 리턴하였다.
거리두기가 안되는 상황의 경우의 수를 모두 찾아 인덱스를 조심하며 검증한다.
만약 거리두기가 안되는 경우이면 check에 0을 대입하고, 효율성을 위해 바로 모든 반복문을 빠져 나간다
(break Loop2;)
그 후 바로 리턴하면 결과값을 찾을 수 있다.
이런 문제는 index를 조심하며 검증해야한다.
만약 Cannot read property '0' of undefined 해당 오류가 뜨면 index쪽에 오류가 생긴거니까 잘 파악하자.
ex) index를 넘어서거나 index가 음수
728x90
반응형
'🔥 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 수식 최대화 (js) (0) | 2021.10.31 |
---|---|
[프로그래머스] 1차 프렌즈4블록 (js) (0) | 2021.10.31 |
[프로그래머스] 메뉴 리뉴얼 (js) (0) | 2021.10.30 |
[프로그래머스] 위클리 챌린지 10주차 교점에 별 만들기 (js) (0) | 2021.10.30 |
[프로그래머스] 3차 압축 (js) (0) | 2021.10.29 |
Comments