[programmers] ์์ ์ง๋ - Java
์ง๋ขฐ ์ฐพ๊ธฐ ๋ฌธ์ ์์ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ๊ณผ ์ธ์ ํ ์ง์ญ์ ๋ชจ๋ ์ํ์ง์ญ์ผ๋ก ๋ถ๋ฅํ๊ณ , ์์ ํ ์ง์ญ์ ์นธ ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ค. ์ด์ค for๋ฌธ์ ์ฌ์ฉํด 2์ฐจ์ ๋ฐฐ์ด์ ์ํํ๋ฉฐ, ์ง๋ขฐ๊ฐ ์๋ ์์น๋ฅผ ์ฐพ์ ์,ํ,์ข,์ฐ,๋๊ฐ์ ์ ๊ฐ์ -1๋ก ์ค์ ํ๋ค. ๋ฐฐ์ด์ ์์น๋ฅผ ๋ฒ์ด๋๋ ๊ฐ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ฃผ์ ๊ณ ๋ ค์ฌํญ์ด๋ค.
Feb 02, 2024
๋ฌธ์ ์ค๋ช
๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ๊ณผ ์ง๋ขฐ์ ์ธ์ ํ ์, ์๋, ์ข, ์ฐ ๋๊ฐ์ ์นธ์ ๋ชจ๋ ์ํ์ง์ญ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
์ง๋ขฐ๋ 2์ฐจ์ ๋ฐฐ์ด
board
์ 1๋ก ํ์๋์ด ์๊ณ board
์๋ ์ง๋ขฐ๊ฐ ๋งค์ค ๋ ์ง์ญ 1๊ณผ, ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 0๋ง ์กด์ฌํฉ๋๋ค.์ง๋ขฐ๊ฐ ๋งค์ค๋ ์ง์ญ์ ์ง๋
board
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์ ํ ์ง์ญ์ ์นธ ์๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.์ ํ์ฌํญ
board
๋ n * n ๋ฐฐ์ด์ ๋๋ค.
- 1 โค n โค 100
- ์ง๋ขฐ๋ 1๋ก ํ์๋์ด ์์ต๋๋ค.
board
์๋ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 1๊ณผ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 0๋ง ์กด์ฌํฉ๋๋ค.
์ ์ถ๋ ฅ ์
board | result |
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0]] | 16 |
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 1, 0], [0, 0, 0, 0, 0]] | 13 |
[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]] | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
- (3, 2)์ ์ง๋ขฐ๊ฐ ์์ผ๋ฏ๋ก ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ๊ณผ ์ง๋ขฐ์ ์ธ์ ํ ์, ์๋, ์ข, ์ฐ, ๋๊ฐ์ ์ด 8์นธ์ ์ํ์ง์ญ์ ๋๋ค. ๋ฐ๋ผ์ 16์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
- (3, 2), (3, 3)์ ์ง๋ขฐ๊ฐ ์์ผ๋ฏ๋ก ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ๊ณผ ์ง๋ขฐ์ ์ธ์ ํ ์, ์๋, ์ข, ์ฐ, ๋๊ฐ์ ์ ์ํ์ง์ญ์ ๋๋ค. ๋ฐ๋ผ์ ์ํ์ง์ญ์ ์ ์ธํ ์นธ ์ 13์ returnํฉ๋๋ค.
์
์ถ๋ ฅ ์ #3
- ๋ชจ๋ ์ง์ญ์ ์ง๋ขฐ๊ฐ ์์ผ๋ฏ๋ก ์์ ์ง์ญ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 0์ returnํฉ๋๋ค.
solution.java
class Solution { public int solution(int[][] board) { int n = board.length; int count = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == 1) { markAdjacentCells(board, i, j); } } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == 0) { count++; } } } return count; } private void markAdjacentCells(int[][] board, int row, int col) { int n = board.length; int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}, {-1, -1}, {-1, 1}, {1, -1}, {1, 1}}; for (int[] dir : directions) { int newRow = row + dir[0]; int newCol = col + dir[1]; if (newRow >= 0 && newRow < n && newCol >= 0 && newCol < n && board[newRow][newCol] == 0) { board[newRow][newCol] = -1; } } } }
ํต์ฌ ํค์๋
- ์ด์ค for๋ฌธ์ ํตํด 2์ฐจ์ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ฝ์ด์จ ๊ฐ์ด 1์ด๋ผ๋ฉด ์,ํ,์ข,์ฐ,๋๊ฐ์ ์ ๊ฐ์ -1๋ก ์ค์ ํ๋ค.
- ๋ง์ฝ ์,ํ,์ข,์ฐ,๋๊ฐ์ ์ ์์น๊ฐ ๋ฐฐ์ด์ ์์น๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ, ํด๋น ์์น๋ ์ ๊ทผํ์ง ์๋๋ค.
๊ฒฐ๋ก !
ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ๋ฐฐ์ด์ ์์น๋ฅผ ๋ฒ์ด๋๋ ๊ฐ์ ์ฒ๋ฆฌํ๋ ๊ฒ์์ ์ด๋ ค์์ ๊ฒช์๋ค.
Share article