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 |
Tags
- Failed to compiled
- ELECTRON
- silent printing
- adb pair
- augmentedDevice
- vercel git lfs
- npm package
- html
- Recoil
- animation
- dvh
- react-native-dotenv
- 이미지 데이터 타입
- custom printing
- github pdf
- Git
- rolldown
- camera access
- Each child in a list should have a unique "key" prop.
- camera permission
- react-native
- github 100mb
- 티스토리 성능
- github lfs
- Can't resolve
- device in use
- ffi-napi
- adb connect
- electron-packager
- nextjs
Archives
- Today
- Total
Bleeding edge
[프로그래머스] 가장 큰 정사각형 - 자바스크립트 본문
https://programmers.co.kr/learn/courses/30/lessons/12905#
코딩테스트 연습 - 가장 큰 정사각형 찾기
[[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9
programmers.co.kr
문제 플로우는 간단하지만 Boundary Condition이 조금더 귀찮은 문제이다.
문제의 플로우는 다음과 같다.
1. board의 1, 1에서 시작하여 n, n까지 for문 두개를 순회한다.i, j
2. board[i][j]의 [i-1, j-1], [i, j-1], [i-1,j-1], [i,j]모두 0이 아닌경우, [i,j]를 제외한 숫자에서 가장 작은 숫자에 +1을 더한다
3. 이 과정중 가장 큰숫자를 제곱한다.
이 순서대로 가지만 이 문제에는 여러 Boundary Condition이 존재한다
1. i가 최대0인경우, j가 최대 0인경우 이경우에는, 각 경우에서 가장 큰 숫자가 return 되야한다. 이유는, 0아니면 1만 나올 수 있기 때문이다.
2. for문에서 제외해준, 0,0 1,0 0,1을 제외하고 모두 0이나온 경우이다. 이 경우에, zeroCheck라는 변수를 만들어서, 이 숫자보다 작은 값으로 return이 될꺼 같으면 그 값을 올려주게 Boundary Condition을 넣으면 된다.
function solution(board){
const h = board.length
const w = board[0].length
//boundary condition
if(h===1){return Math.max(...board[0])}
if(w===1){
let wmax
for(let i=0;i<w;i++){
if(wmax<board[i]){
wmax = board[i]
}
} return wmax}
// calc
let max =0
let zeroCheck = Math.max(board[0][0], board[1][0], board[0][1])
for(let j=1;j<w;j++){
for(let i=1;i<h;i++){
if(board[i-1][j-1]!==0&&board[i-1][j]!==0&&board[i][j-1]!==0&&board[i][j]!==0){
board[i][j]=Math.min(board[i-1][j-1], board[i-1][j], board[i][j-1])+1
if(max<board[i][j]){
max = board[i][j]
}
}
}
}
max = Math.max(max, zeroCheck)
return max*max
}
'코딩테스트 공부' 카테고리의 다른 글
[프로그래머스] 직사각형 별찍기 - 자바스크립트 0606 (0) | 2022.06.06 |
---|---|
[프로그래머스] 2 x n 타일링 -자바스크립트 (0) | 2022.06.02 |
[프로그래머스] N으로 표현 - 자바스크립트 (0) | 2022.05.20 |
[프로그래머스] 여행경로 - 자바스크립트 (0) | 2022.05.18 |
[프로그래머스] 구명보트 - 자바스크립트 (0) | 2022.05.13 |