Hello Kitty Eyes Shut
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป ์ฝ”ํ…Œ/๐Ÿ“Œ JAVA

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JAVA] ์ด์›ƒํ•œ ์นธ

๋ฐ˜์‘ํ˜•

 

 

 

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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) ์ด๋‹ค.

๋ฐ˜์‘ํ˜•