๊ด€๋ฆฌ ๋ฉ”๋‰ด

Binary Journey

[ํ…Œ์ฝ”ํ…Œ์ฝ”1.5 1-11] ์ด์›ƒํ•œ ์นธ ๋ณธ๋ฌธ

Algorithm/ํ…Œ์ฝ”ํ…Œ์ฝ”1.5(2025.01)

[ํ…Œ์ฝ”ํ…Œ์ฝ”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์˜ ๊ธธ์ด ≤ 7
    • board์˜ ๊ธธ์ด์™€ board[n]์˜ ๊ธธ์ด๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • 0 ≤ h, w < board์˜ ๊ธธ์ด
  • 1 ≤ board[h][w]์˜ ๊ธธ์ด ≤ 10
    • board[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 ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ ๋งŽ์œผ๋‹ˆ ์•Œ์•„๋‘˜ ๊ฒƒ.
๋ฐ˜์‘ํ˜•