ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์ง๋ ์ ๋ณด๊ฐ N*N ๊ฒฉ์ํ์ ์ฃผ์ด์ง๋ค. ๊ฐ ๊ฒฉ์์๋ ๊ทธ ์ง์ญ์ ๋์ด๊ฐ ์ฐ์ฌ์์ต๋๋ค. ๊ฐ ๊ฒฉ์ํ์ ์ซ์ ์ค ์์ ์ ์ํ์ข์ฐ ์ซ์๋ณด๋ค ํฐ ์ซ์
๋ ๋ด์ฐ๋ฆฌ ์ง์ญ์ด๋ค. ๋ด์ฐ๋ฆฌ ์ง์ญ์ด ๋ช ๊ฐ ์๋์ง ์์๋ด๊ณ ์ ํ๋ค.
(๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ๋ 0์ผ๋ก ์ด๊ธฐํ ๋์๋ค๊ณ ๊ฐ์ ํ๋ค.)
๋ฌธ์ ํ์ด
๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ๋ 0์ผ๋ก ์ด๊ธฐํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋์ด๋ฅผ ๋น๊ตํ ํ์๊ฐ ์์ด ์ด๋ณด๋ค ํญ์ ํฌ๋ค.
๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ์ธ 0์ ์ธ์ ํ ์์ญ(๋ณด๋ผ์)๊ณผ ๊ทธ๋ ์ง ์์ ์์ญ(์ฃผํฉ์)์ ๋ ๊ฐ๋ก ๋๋ ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ค.
๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ์ธ 0์ ์ธ์ ํ ์์ญ์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐ๋ผ ๊ฐ ๋ฐฉํฅ์์ ์ ์ธ๋๋ ์์ญ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
(๋น๊ตํ๊ณ ์ ํ๋ ๊ฐ์ ์ธ์ ๋ 0๋ณด๋ค๋ ํฌ๊ธฐ ๋๋ฌธ์ด๋ค)
์ด๋ ๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ 0์ ์ธ์ ํ ์์ญ ์ค 4๊ตฐ๋ฐ์ ๋ชจ์๋ฆฌ ์์ญ(5, 3, 8, 2)๋ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋ ๊ตฐ๋ฐ์ ๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ์ ์ธ์ ํด ์๊ธฐ ๋๋ฌธ์ ํด๋นํ๋ ๋ฐฉํฅ์ ์ธ๋ฑ์ค๋ ๊ณ์ฐ์์ ์ ์ธํด ์ค๋ค.
๋น๊ตํ๊ณ ์ ํ๋ ์ค์ฌ ์์ ๊ฐ์ธ center[i][j]์์ ๊ฐ ๋ฐฉํฅ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
์: (i - 1, j)
์๋: (i +1, j)
์ค๋ฅธ์ชฝ: (i, j + 1)
์ผ์ชฝ: (i, j - 1)
์ฝ๋
function solution(num, height) {
let answer = [];
let top, bottom, left, right;
for (let i = 0; i < num; i++) {
let max = 0;
for (let j = 0; j < num; j++) {
let center = height[i][j];
if (i === 0) {
bottom = height[i + 1][j];
right = height[i][j + 1];
left = height[i][j - 1];
if (j === 0) {
let max = Math.max(center, bottom, right);
if (center === max) {
answer.push(max);
}
} else if (j === 4) {
let max = Math.max(center, bottom, left);
if (center === max) {
answer.push(max);
}
}
let max = Math.max(center, bottom, right, left);
if (center === max) {
answer.push(max);
}
}
if (i === 4) {
top = height[i - 1][j];
right = height[i][j + 1];
left = height[i][j - 1];
if (j === 0) {
let max = Math.max(center, top, right);
if (center === max) {
answer.push(max);
}
} else if (j === 4) {
let max = Math.max(center, top, left);
if (center === max) {
answer.push(max);
}
}
let max = Math.max(center, top, right, left);
if (center === max) {
answer.push(max);
}
}
if (0 < i && num - 1 > i) {
if (j === 0) {
top = height[i - 1][j];
right = height[i][j + 1];
bottom = height[i + 1][j];
let max = Math.max(center, top, right);
if (center === max) {
answer.push(max);
}
} else if(j === 4) {
top = height[i - 1][j];
left = height[i][j - 1];
bottom = height[i + 1][j];
let max = Math.max(center, top, left);
if (center === max) {
answer.push(max);
}
}
}
}
}
top, bottom, left, (right = 0);
for (let i = 1; i < num - 1; i++) {
let max = 0;
for (let j = 1; j < num - 1; j++) {
let center = height[i][j];
top = height[i - 1][j];
bottom = height[i + 1][j];
left = height[i][j - 1];
right = height[i][j + 1];
let max = Math.max(center, top, bottom, left, right);
if (center === max) {
answer.push(max);
}
}
}
return answer.length;
}
let height = [
[5, 3, 7, 2, 3],
[3, 7, 1, 6, 1],
[7, 2, 5, 3, 4],
[4, 3, 6, 4, 1],
[8, 7, 3, 5, 2]
];
console.log(solution(5, height));
๊ฐ์ ์ฌํญ
๊ฐ ๋ฐฉํฅ๊ฐ์ ๋ํ ์ธ๋ฑ์ค์ ๊ฐ์ ํญ์ ๊ณ ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ํ๋ฌธ์์ ๊ณตํต์ ์ผ๋ก ์ฐ์ผ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค.
๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ์ธ 0์ ์ธ์ ํ ์์ญ๊ณผ ๊ทธ๋ ์ง ์์ ์์ญ์ ๋๊ฐ๋ก ๋๋ ๋ฐ๋ณต๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ ๋์ผํ ์ฐ์ฐ๋ค์ด ์งํ๋์ด ์ฝ๋ ์ ํจ์จ์ ์ด์ง ๋ชปํ๋ค. ์์ญ์ ๊ตฌ๋ถํ๊ธฐ ๋ณด๋จ 3์ค for์ ์ํํ๋ค. ๋ง์ง๋ง for๋ฌธ ๋ด์์ ํ๊ณผ ์ด์ ๋ํ ๋ฐฉํฅ๊ฐ๋ค์ ๋ฐ๋ณต์ ์ผ๋ก ๋ณ์์ ํ ๋นํ์ฌ ์ด๋ฅผ ํตํด ์ฐธ์กฐํ๊ณ ์ ํ๋ ์ธ๋ฑ์ค์ ๋์ด๊ฐ ๋ด์ฐ๋ฆฌ์ ํด๋นํ๋์ง ํ์ธํ๋ค.
๊ฒฉ์์ ๊ฐ์ฅ์๋ฆฌ ์์ญ๋ค์ด ๋ด์ฐ๋ฆฌ์ธ์ง ํ์ธํ ๋, ๊ฐ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐ๋ผ ์ ์ธ๋๋ ๋ฐฉํฅ์ด ์๋ค. ์ด๋ ์ ์ธ๋๋ ๋ฐฉํฅ๊ฐ์ index out of range ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.(0์ ์ค์ ๋ฐฐ์ด ๋ด์ ์์๋ก ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ ํ์ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค) ๋ณธ ์๋ฌ๋ฅผ ์กฐ๊ฑด๋ฌธ์ ์ด์ฉํ์ฌ ํด๋น ๋ฐฉํฅ๊ฐ์ด ๋ณธ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๋ฒ์ ๋ด์์ ๋ฒ์ด๋ ๊ฒฝ์ฐ์ ๋น๊ต ์ฐ์ฐ์ ํ์ง ์๊ณ ๊ทธ๋๋ก ๋ค์ ๋ฐ๋ณต๋ฌธ์ ์ํํ๋๋ก ํ๋ค.
๋ด์ฐ๋ฆฌ๊ฐ ๋๊ธฐ ์ํ ์กฐ๊ฑด ์ ์ธ์ ํ ์์ญ ์ค ํ๋๋ผ๋ ์์ ๋ณด๋ค ํฐ ๊ฐ์ ์ง๋ ์์๊ฐ ์์ ๊ฒฝ์ฐ์๋ ๋ง์กฑํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ ๋น๊ต ์ ์ธ์ ํ ์์ญ๋ค ์ค์ ํ๋๋ผ๋ ํฐ ๊ฐ์ด ์๋ค๋ฉด ํด๋น ๊ฐ์ ์ ๋ต์์ ์ ์ธํ๋ค.
์ฝ๋
function solution(arr){
let answer=0;
let n=arr.length;
let dx=[-1, 0, 1, 0];
let dy=[0, 1, 0, -1];
for(let i=0; i<n; i++){
for(let j=0; j<n; j++){
let flag=1;
for(let k=0; k<4; k++){
let nx=i+dx[k];
let ny=j+dy[k];
if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){
flag=0;
break;
}
}
if(flag) answer++;
}
}
return answer;
}
let arr=[[5, 3, 7, 2, 3],
[3, 7, 1, 6, 1],
[7, 2, 5, 3, 4],
[4, 3, 6, 4, 1],
[8, 7, 3, 5, 2]];
console.log(solution(arr));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ํจํ ํฐ๋ฆฐ๋๋กฌ (0) | 2021.05.16 |
---|---|
ํ๋ฌธ ๋ฌธ์์ด (0) | 2021.05.15 |
๊ฒฉ์ํ ์ต๋ํฉ (0) | 2021.05.12 |
๋ฑ์๊ตฌํ๊ธฐ (0) | 2021.05.11 |
์ ์๊ณ์ฐ (0) | 2021.05.11 |