지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 격자판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다.
격자의 가장자리는 0으로 초기화 되었다고 가정합니다.
만약 N=5 이고, 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개입니다.
매개변수 board에 지도정보가 주어지면 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요.
입력 예제
출력 예제
function solution(board) {
const cnt = 0;
let n = 5;
return cnt;
}
function solution(board) {
const cnt = 0;
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
return cnt;
}
여기서 x는 행의 좌표, y는 열의 좌표를 의미하고, d는 방향을 나타냅니다.
function solution(board) {
const cnt = 0;
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
let flag = true;
}
}
return cnt;
}
function solution(board) {
const cnt = 0;
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
let flag = true;
for (let k = 0; k < 4; k++) {
let nx = i + dx[k];
let ny = j + dy[k];
}
}
}
return cnt;
}
function solution(board) {
const cnt = 0;
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
let flag = true;
for (let k = 0; k < 4; k++) {
let nx = i + dx[k];
let ny = j + dy[k];
if (
nx >= 0 &&
ny >= 0 &&
nx < n &&
ny < n &&
board[i][j] <= board[nx][ny]
)
{
flag = false;
break;
}
}
}
}
return cnt;
}
if 조건문안에 상하좌우로 움직이려는 행과 열의 움직임인 board[nx][ny]가 봉우리가 될 수 있는 값인 board[i][j] 보다 작거나 같다면 board[i][j]는 봉우리가 될 수 없습니다
행의 위치 index인 nx와 열의 위치 index인 ny는 0보다 커야합니다
nx와 ny는 board의 길이인 n보다는 작아야합니다.
조건문에 해당되면 봉우리가 맞는지 알려주는 flag 변수를 false로 선언해줍니다.
그리고 반복문이 멈추도록 break를 넣어줍니다.
function solution(board) {
const cnt = 0;
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
let flag = true;
for (let k = 0; k < 4; k++) {
let nx = i + dx[k];
let ny = j + dy[k];
if (
nx >= 0 &&
ny >= 0 &&
nx < n &&
ny < n &&
board[i][j] <= board[nx][ny]
)
{
flag = false;
break;
}
}
if (flag) cnt++;
}
}
return cnt;
}