์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ์ด์ฝํ
- maeil-mail
- react-router
- axios
- java
- redux-saga
- ํญํดํ๋ฌ์ค
- redux-toolkit
- JavaScript
- ์ฝ๋ฉํ ์คํธํฉ๊ฒฉ์๋๊ธฐ
- ๋ฆฌ์กํธ
- ์๊ณ ๋ฆฌ์ฆ
- SW
- react
- ๋งค์ผ๋ฉ์ผ
- Algorithm
- json-server
- Get
- redux
- react-redux
- Python
- useDispatch
- ํญํด99
- ์๋ฐ
- C++
- programmers
- sw expert academy
- ํ ์ฝํ ์ฝ
- ํ๋ก๊ทธ๋๋จธ์ค
- createSlice
- Today
- Total
Binary Journey
[ํ ์ฝํ ์ฝ1.5 1-11] ์ด์ํ ์นธ ๋ณธ๋ฌธ
[ํ ์ฝํ ์ฝ1.5 1-11] ์ด์ํ ์นธ
binaryJournalist 2025. 1. 14. 16:00๐กํ ์ฝํ ์ฝ ์์ฆ 1.5 1ํ ๋ชจ์ on-site ๋ฌธ์ ํ์ด์ ๋๋ค. (2025.01.12)
๋ฌธ์
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค - PCCE ๊ธฐ์ถ๋ฌธ์ 09. ์ด์ํ ์นธ
๋ด์ฉ
๊ฐ ์นธ๋ง๋ค ์์ด ์น ํด์ง 2์ฐจ์ ๊ฒฉ์ ๋ณด๋ํ์ด ์์ต๋๋ค. ๊ทธ์ค ํ ์นธ์ ๊ณจ๋์ ๋, ์, ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์นธ ์ค ๊ฐ์ ์๊น๋ก ์น ํด์ง ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค.
๋ณด๋์ ๊ฐ ์นธ์ ์น ํด์ง ์๊น ์ด๋ฆ์ด ๋ด๊ธด ์ด์ฐจ์ ๋ฌธ์์ด ๋ฆฌ์คํธ board
์ ๊ณ ๋ฅธ ์นธ์ ์์น๋ฅผ ๋ํ๋ด๋ ๋ ์ ์ h
, w
๊ฐ ์ฃผ์ด์ง ๋ board[h][w]
์ ์ด์ํ ์นธ๋ค ์ค ๊ฐ์ ์์ผ๋ก ์น ํด์ ธ ์๋ ์นธ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ด์ํ ์นธ๋ค ์ค ๋ช ๊ฐ์ ์นธ์ด ๊ฐ์ ์์ผ๋ก ์์น ๋์ด ์๋์ง ํ์ธํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ ์๋ฅผ ์ ์ฅํ ๋ณ์ n์ ๋ง๋ค๊ณ board์ ๊ธธ์ด๋ฅผ ์ ์ฅํฉ๋๋ค.
2. ๊ฐ์ ์์ผ๋ก ์์น ๋ ์นธ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋ณ์ count๋ฅผ ๋ง๋ค๊ณ 0์ ์ ์ฅํฉ๋๋ค.
3. h์ w์ ๋ณํ๋์ ์ ์ฅํ ์ ์ ๋ฆฌ์คํธ dh, dw๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ [0, 1, -1, 0], [1, 0, 0, -1]์ ์ ์ฅํฉ๋๋ค.
4. ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด i ๊ฐ์ 0๋ถํฐ 3๊น์ง 1 ์ฉ ์ฆ๊ฐ์ํค๋ฉฐ ์๋ ์์
์ ๋ฐ๋ณตํฉ๋๋ค.
4-1. ์ฒดํฌํ ์นธ์ h, w ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ณ์ h_check, w_check๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ h + dh[i], w + dw[i]๋ฅผ ์ ์ฅํฉ๋๋ค.
4-2. h_check๊ฐ 0 ์ด์ n ๋ฏธ๋ง์ด๊ณ w_check๊ฐ 0 ์ด์ n ๋ฏธ๋ง์ด๋ผ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
4-2-a. board[h][w]์ board[h_check][w_check]์ ๊ฐ์ด ๋์ผํ๋ค๋ฉด count์ ๊ฐ์ 1 ์ฆ๊ฐ์ํต๋๋ค.
5. count์ ๊ฐ์ returnํฉ๋๋ค.
- ์์ ์์ฌ์ฝ๋์ ์๋๋ฐฉ์์ด ๋ค๋ฅธ ์ฝ๋๋ฅผ ์์ฑํด๋ ์๊ด์์ต๋๋ค
๊ธฐ๋กํ๊ธฐ
๐ก ์ด๋๊น์ง ์๊ฐํด๋ดค๋์ง ๋จ๊ณ์ ์ผ๋ก ๊ธฐ๋กํด๋ด ๋๋ค.
ํ์ด
ํ์ด ์๊ฐ
์์ ์๊ฐ | ์ข ๋ฃ ์๊ฐ | ์ด ์์ ์๊ฐ |
---|---|---|
11:00 | 11:10 | 10๋ถ |
๋ฌธ์ ๋ถ์
์ ์ฝ ์ฌํญ ํ์ & ํ ์คํธ ์ผ์ด์ค ์์ฑ
- 1 ≤
board
์ ๊ธธ์ด ≤ 7board
์ ๊ธธ์ด์board[n]
์ ๊ธธ์ด๋ ๋์ผํฉ๋๋ค.
- 0 ≤
h
,w
<board
์ ๊ธธ์ด - 1 ≤
board[h][w]
์ ๊ธธ์ด ≤ 10board[h][w]
๋ ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ๋ ฅ๊ฐ ๋ถ์
๐ก ์ ๋ ฅ๊ฐ์ ๋ถ์ํ๋ฉด ๋ฌธ์ ์์ ์๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ์ ์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค.
board | h | w | result |
---|---|---|---|
[["blue", "red", "orange", "red"], ["red", "red", "blue", "orange"], ["blue", "orange", "red", "red"], ["orange", "orange", "red", "blue"]] | 1 | 1 | 2 |
[["yellow", "green", "blue"], ["blue", "green", "yellow"], ["yellow", "blue", "blue"]] | 0 | 1 | 1 |
์์ฌ ์ฝ๋ ์์ฑ
๐ก ์์ฌ ์ฝ๋๋ ๋์ ์ค์ฌ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ก ์์ฌ ์ฝ๋๋ ๋ฌธ์ ํด๊ฒฐ ์์๋ก ์์ฑํฉ๋๋ค.
๐ก ์์ฌ ์ฝ๋๋ฅผ ์ถฉ๋ถํ ํ ์คํธํด๋ด ๋๋ค.
1. ์ ์๋ฅผ ์ ์ฅํ ๋ณ์ n์ ๋ง๋ค๊ณ board์ ๊ธธ์ด๋ฅผ ์ ์ฅํฉ๋๋ค.
2. ๊ฐ์ ์์ผ๋ก ์์น ๋ ์นธ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋ณ์ count๋ฅผ ๋ง๋ค๊ณ 0์ ์ ์ฅํฉ๋๋ค.
3. h์ w์ ๋ณํ๋์ ์ ์ฅํ ์ ์ ๋ฆฌ์คํธ dh, dw๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ [0, 1, -1, 0], [1, 0, 0, -1]์ ์ ์ฅํฉ๋๋ค.
4. ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด i ๊ฐ์ 0๋ถํฐ 3๊น์ง 1 ์ฉ ์ฆ๊ฐ์ํค๋ฉฐ ์๋ ์์
์ ๋ฐ๋ณตํฉ๋๋ค.
4-1. ์ฒดํฌํ ์นธ์ h, w ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ณ์ h_check, w_check๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ h + dh[i], w + dw[i]๋ฅผ ์ ์ฅํฉ๋๋ค.
4-2. h_check๊ฐ 0 ์ด์ n ๋ฏธ๋ง์ด๊ณ w_check๊ฐ 0 ์ด์ n ๋ฏธ๋ง์ด๋ผ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
4-2-a. board[h][w]์ board[h_check][w_check]์ ๊ฐ์ด ๋์ผํ๋ค๋ฉด count์ ๊ฐ์ 1 ์ฆ๊ฐ์ํต๋๋ค.
5. count์ ๊ฐ์ returnํฉ๋๋ค.
solution(String[][] board, int h, int w) {
// 1. ์ ์๋ฅผ ์ ์ฅํ ๋ณ์ n์ ๋ง๋ค๊ณ board์ ๊ธธ์ด๋ฅผ ์ ์ฅํฉ๋๋ค.
int n = board.length;
// 2. ๊ฐ์ ์์ผ๋ก ์์น ๋ ์นธ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋ณ์ count๋ฅผ ๋ง๋ค๊ณ 0์ ์ ์ฅํฉ๋๋ค.
int count = 0;
// 3. h์ w์ ๋ณํ๋์ ์ ์ฅํ ์ ์ ๋ฆฌ์คํธ dh, dw๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ [0, 1, -1, 0], [1, 0, 0, -1]์ ์ ์ฅํฉ๋๋ค.
int[] dh = {0, 1, -1, 0};
int[] dw = {1, 0, 0, -1};
// 4. ๋ฐ๋ณต๋ฌธ (์, ํ, ์ข, ์ฐ ์ด๋ฏ๋ก 4๋ฒ)
for (int i = 0; i < 4; i++) {
// ์ฒดํฌํ ์นธ์ h, w ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ณ์
int h_check = h + dh[i];
int w_check = w + dw[i];
// board ์ด๋ด && board[h][w]์ board[h_check][w_check]์ ๊ฐ์ด ๋
if (0 <= h_check < n && 0 <= w_check < n
&& board[h][w] == board[h_check][w_check]) {
count++;
}
}
return count;
}
๊ตฌํ
class Solution {
public int solution(String[][] board, int h, int w) {
// 1. ์ ์๋ฅผ ์ ์ฅํ ๋ณ์ n์ ๋ง๋ค๊ณ board์ ๊ธธ์ด๋ฅผ ์ ์ฅํฉ๋๋ค.
int n = board.length;
// 2. ๊ฐ์ ์์ผ๋ก ์์น ๋ ์นธ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋ณ์ count๋ฅผ ๋ง๋ค๊ณ 0์ ์ ์ฅํฉ๋๋ค.
int count = 0;
// 3. h์ w์ ๋ณํ๋์ ์ ์ฅํ ์ ์ ๋ฆฌ์คํธ dh, dw๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ [0, 1, -1, 0], [1, 0, 0, -1]์ ์ ์ฅํฉ๋๋ค.
int[] dh = {0, 1, -1, 0};
int[] dw = {1, 0, 0, -1};
// 4. ๋ฐ๋ณต๋ฌธ (์, ํ, ์ข, ์ฐ ์ด๋ฏ๋ก 4๋ฒ)
for (int i = 0; i < 4; i++) {
// ์ฒดํฌํ ์นธ์ h, w ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ณ์
int h_check = h + dh[i];
int w_check = w + dw[i];
// board ์ด๋ด && board[h][w]์ board[h_check][w_check]์ ๊ฐ์ด ๋์ผ
if (0 <= h_check && h_check < n && 0 <= w_check && w_check < n
&& board[h][w].equals(board[h_check][w_check])) {
count++;
}
}
return count;
}
}
- ์์ฌ ์ฝ๋๋๋ก ํ๊ธฐ๋ ํ๋๋ฐ ์ด๊ฒ๋ณด๋ค ์ข์ ํ์ด๊ฐ ์์๊น?
- ์๊ฐ ๊ด์ฐฎ์ผ๋ฉด ๋ฆฌํฉํ ๋ง๊น์ง ํ๊ธฐ
๋ณต๊ธฐํ๊ธฐ
์์ฝํ๊ธฐ
- dh, dw ํน์ dx, dy ํ์ฉํ๋ ๋ฌธ์ ๋ง์ผ๋ ์์๋ ๊ฒ.
'Algorithm > ํ ์ฝํ ์ฝ1.5(2025.01)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ ์ฝํ ์ฝ1.5 1-12] ๋ฐ์ดํฐ ๋ถ์ (0) | 2025.01.14 |
---|---|
[ํ ์ฝํ ์ฝ1.5 1-10] ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ ๋ฌผ (0) | 2025.01.14 |
[ํ ์ฝํ ์ฝ1.5 1-09] ๋ถ๋ ๊ฐ๊ธฐ (0) | 2025.01.14 |
[ํ ์ฝํ ์ฝ1.5 1-08] ๊ณต์ (0) | 2025.01.14 |
[ํ ์ฝํ ์ฝ1.5 1-07] ์งํ ์ ๊ธฐ (0) | 2025.01.12 |