
😎풀이
perimeter
: 섬의 둘레
rowMax
: 행 경곗값
colMax
: 열 경곗값
- 전체 행렬 순회
4-1. 바다가 발견되었다면(0
) 다음 탐색
4-2. 첫 행이거나(위가 반드시 뚫려있음), 현재 셀 윗칸에 육지가 없을 경우 둘레 1 증가
4-3. 마지막 열이거나(오른쪽이 반드시 뚫려있음), 현재 셀 오른쪽에 육지가 없을 경우 둘레 1 증가
4-4. 마지막 행이거나(아래가 반드시 뚫려있음), 현재 셀 아래에 육지가 없을 경우 둘레 1 증가
4-5. 첫 열이거나(왼쪽이 반드시 뚫려있음), 현재 셀 왼쪽에 육지가 없을 경우 둘레 1 증가
- 탐색된 섬의 둘레 반환
function islandPerimeter(grid: number[][]): number {
let perimeter = 0
const rowMax = grid.length
const colMax = grid[0].length
for(let row = 0; row < rowMax; row++) {
for(let col = 0; col < colMax; col++) {
if(!grid[row][col]) continue
if(row === 0) perimeter++
else if(grid[row - 1][col] !== 1) perimeter++
if(col + 1 === colMax) perimeter++
else if(grid[row][col + 1] !== 1) perimeter++
if(row + 1 === rowMax) perimeter++
else if(grid[row + 1][col] !== 1) perimeter++
if(col === 0) perimeter++
else if(grid[row][col - 1] !== 1) perimeter++
}
}
return perimeter
};