๐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/250125?language=java
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๐ ๋ฌธ์ ์์ฝ

๐จ ์ธ์ ํ ์นธ์ ์๋ ๊ฐ์ ์ ๊ฐ์ ์ฐพ๊ธฐ
- 2์ฐจ์ ๊ฒฉ์ ๋ชจ์์ ๋ณด๋ํ์ด ์ฃผ์ด์ง๋ค.
- ๊ฐ ์นธ์๋ ์๊น์ด ํ๋์ฉ ์น ํด์ ธ ์๋ค.
- ์ด ๋ณด๋์นธ์์ ํ ์นธ์ ์ ํํ์ ๋, ๊ทธ ์นธ์ ์, ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ์๋ ์ธ์ ํ ์นธ๋ค ์ค์์ ๊ฐ์ ์๊น๋ก ์น ํด์ง ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํด์ผ ํ๋ค.
๐ก ์์ด๋์ด
1๏ธโฃ ๋ฐฉํฅ ํ์
๋ฐฉํฅ์ ์ง์ ํ๋์ฝ๋ฉํ๊ธฐ ๋ณด๋ค๋, ์๋์ ๊ฐ์ด ๋ณํ๋ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด ๋ ๊ฐ๋จํ๊ฒ 4 ๋ฐฉํฅ์ ์ฒ๋ฆฌํ ์ ์๋ค.
int[] dh = {0, 1, -1, 0}; // ํ ๋ณํ๋
int[] dw = {1, 0, 0, -1}; // ์ด ๋ณํ๋
์๋ฅผ ๋ค์ด i = 0์ผ ๋๋ (h, w + 1) → ์ค๋ฅธ์ชฝ, i = 1์ผ ๋๋ (h + 1, w) → ์๋์ชฝ์ ์๋ฏธํ๋ค.
2๏ธโฃ ๋ฒ์ ์ฒดํฌ
if (0 <= h_check && h_check < n && 0 <= w_check && w_check < n)
๋ง์ฝ (h + dh[i], w + dw[i])๊ฐ ๋ณด๋ ๋ฐ์ด๋ผ๋ฉด, ์์ ๋น๊ตํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ๋ฒ์ ์ฒดํฌ๋ฅผ ํด์ค์ผ ํ๋ค.
3๏ธโฃ count ์ฆ๊ฐ
if (board[h][w].equals(board[h_check][w_check])) {
count++;
}
๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์์ผ๋ฉด์, ๊ธฐ์ค ์นธ๊ณผ ์๊น์ด ๋์ผํ๋ค๋ฉด count๋ฅผ 1๋งํผ ์ฆ๊ฐ์์ผ์ค๋ค.
๐ฉ๐ป๐ป ์ต์ข ์ฝ๋
class Solution {
public int solution(String[][] board, int h, int w) {
int n = board.length;
int count = 0;
int[] dh = {0, 1, -1, 0};
int[] dw = {1, 0, 0, -1};
for(int i = 0; i < 4; i++){
int h_check = h + dh[i];
int w_check = w + dw[i];
if(h_check >= 0 && h_check < n && w_check >= 0 && w_check < n){
if(board[h][w].equals(board[h_check][w_check])){
count++;
}
}
}
return count;
}
}
๐ ์๊ฐ ๋ณต์ก๋
for (int i = 0; i < 4; i++) {
...
if (board[h][w].equals(board[h_check][w_check])) {
count++;
}
}
- ์ด ๋ฐ๋ณต๋ฌธ์ ํญ์ 4๋ฒ๋ง ์คํ๋๋ค. (์, ํ, ์ข, ์ฐ)
- ๋ด๋ถ ์ฐ์ฐ์ ๋จ์ํ ๋ฌธ์์ด ๋น๊ต 1ํ์ ์กฐ๊ฑด๋ฌธ ๊ฒ์ฌ์ด๋ค.
๐๐ป ์ฆ, ์๊ฐ ๋ณต์ก๋๋ O(1) ์ด๋ค.
'๐ป ์ฝํ > ๐ JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (6) | 2025.08.10 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ๋ฐ์ดํฐ ๋ถ์ (5) | 2025.08.09 |
| [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ๋ถ๋ ๊ฐ๊ธฐ (3) | 2025.07.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ ๋ฌผ (4) | 2025.07.26 |
| [ํ๋ก๊ทธ๋๋จธ์ค/JAVA] ๊ณต์ (1) | 2025.07.23 |