Hzim-dev

[Programmers] ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฑด๋ฌผ - Java ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

[Programmers] ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฑด๋ฌผ - Java

Hzim 2024. 8. 30. 23:34

๐Ÿ“ ๋ฌธ์ œ ๐Ÿ“

https://school.programmers.co.kr/learn/courses/30/lessons/92344
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

๐Ÿ“ ์š”์•ฝ ๐Ÿ“

  • ์ ์˜ ๊ณต๊ฒฉ ํ˜น์€ ์•„๊ตฐ์˜ ํšŒ๋ณต ์Šคํ‚ฌ์ด ๋ชจ๋‘ ๋๋‚œ ํ›„, ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฑด๋ฌผ์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
  • ์ ์ด ๊ณต๊ฒฉํ•  ๋•Œ๋Š” ๋‚ด๊ตฌ๋„๊ฐ€ ๊ฐ์†Œํ•˜๊ณ , ์•„๊ตฐ์ด ํšŒ๋ณต ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋‚ด๊ตฌ๋„๊ฐ€ ํšŒ๋ณต๋จ

 

๐Ÿ“๋ฌธ์ œ ํ’€์ด ๊ณผ์ •๐Ÿ“

  • ๊ณต๊ฒฉ๊ณผ ํšŒ๋ณต์ด ๋ฐ˜๋ณต๋˜๋Š”๋ฐ ๋ชจ๋“  ๋ฒ”์œ„๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์ผ์ผ์ด ์‹คํ–‰ํ•˜๊ธฐ์—” ํ–‰, ์—ด ๊ฐ๊ฐ ํฌ๊ธฐ๊ฐ€ ์ตœ๋Œ€ 1000์ด๋ฏ€๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ธฐ๋กํ•ด๋‘๊ณ  ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰ํ•˜๋Š” ๋ˆ„์ ํ•ฉ์„ ์ƒ๊ฐํ–ˆ๋‹ค.

 

๐Ÿ“ํ’€์ด๐Ÿ“

1. ๋ˆ„์ ํ•ฉ์„ ๊ธฐ๋กํ•  ๋ฐฐ์—ด ์ƒ์„ฑ

2. ๊ณต๊ฒฉ ํ˜น์€ ํšŒ๋ณต ์‹œ์ž‘(=r1)์— degree ๊ธฐ๋ก, ๋๋‚˜๋Š” ๋ถ€๋ถ„ + 1 (=c2+1)์— ๋ถ€ํ˜ธ๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ•œ -degree ๊ธฐ๋ก

3. ๋ชจ๋“  ๊ธฐ๋ก์ด ๋๋‚œ ํ›„, ๋ˆ„์ ํ•ฉ ๊ณ„์‚ฐ

4. ๋ˆ„์ ํ•ฉ ๊ณ„์‚ฐ๊ณผ ๊ฑด๋ฌผ์˜ ๋‚ด๊ตฌ๋„ ๊ฐ’ ๊ณ„์‚ฐํ•˜๋ฉด์„œ ๋‚ด๊ตฌ๋„๊ฐ€ 1์ด์ƒ์ด๋ผ๋ฉด answer++

 

 

๐Ÿ“์‹œ๊ฐ„ ์ดˆ๊ณผ๐Ÿ“

์ฒ˜์Œ์—๋Š” ๋ฐฐ์—ด์˜ ํ–‰์—์„œ๋งŒ ๋ˆ„์ ํ•ฉ์„ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ํšจ์œจ์„ฑ ์ฑ„์ ์—์„œ 0์ ์ด์—ˆ๋‹ค. ํ’€๋ฉด์„œ๋„ ๊ณต๊ฒฉ, ํšŒ๋ณต์„ ๊ธฐ๋กํ•  ๋•Œ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์•„๋‹ˆ๋‚˜๋‹ค๋ฅผ๊นŒ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ฝ”๋“œ์˜ ์ค‘๋ณต๋„ ์ค„์ด๋ฉด์„œ ํšจ์œจ์„ฑ์„ ๋†’์ด๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ํ–‰๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ด๋„ ๋ˆ„์ ํ•ฉ์„ ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค.

class Solution {
    public int solution(int[][] board, int[][] skill) {
        int answer = 0;
        int[][] dura = new int[board.length+1][board[0].length+1];
        for(int[] s : skill){
            if(s[0] == 1){
                for(int i=0; i<=s[3]-s[1]; i++){
                    dura[s[1]+i][s[2]] -= s[5];
                    dura[s[1]+i][s[4]+1] += s[5];
                }
            }
            else{
                for(int i=0; i<=s[3]-s[1]; i++){
                    dura[s[1]+i][s[2]] += s[5];
                    dura[s[1]+i][s[4]+1] -= s[5];
                }
            }
        }
        for(int i=0; i<dura.length; i++){
            for(int j=1; j<dura[0].length; j++){
                dura[i][j] += dura[i][j-1];
            }
        }
        
        for(int i=0; i<board.length; i++){
            for(int j=0; j<board[0].length; j++){
                board[i][j] += dura[i][j];
                if(board[i][j] > 0) answer++;
            }
        }
        return answer;
    }
}

 


๐Ÿ“์ตœ์ข… ์ฝ”๋“œ๐Ÿ“

class Solution {
    public int solution(int[][] board, int[][] skill) {
        int answer = 0;
        int n = board.length;
        int m = board[0].length;
        int[][] dura = new int[n+1][m+1];
        for(int[] s : skill){
            int r1 = s[1];
            int c1 = s[2];
            int r2 = s[3];
            int c2 = s[4];
            int degree = s[5] * (s[0]==1? -1:1);
            
            dura[r1][c1] += degree;
            dura[r1][c2+1] -= degree;
            dura[r2+1][c1] -= degree;
            dura[r2+1][c2+1] += degree;
            
        }
        // ๊ฐ€๋กœ
        for(int i=0; i<n+1; i++){
            for(int j=1; j<m+1; j++){
                dura[i][j] += dura[i][j-1];
            }
        }
        
        // ์„ธ๋กœ
        for(int i=0; i<m+1; i++){
            for(int j=1; j<n+1; j++){
                dura[j][i] += dura[j-1][i];
            }
        }
        
        for(int i=0; i<board.length; i++){
            for(int j=0; j<board[0].length; j++){
                board[i][j] += dura[i][j];
                if(board[i][j] > 0) answer++;
            }
        }
        return answer;
    }
}

 

 

๐Ÿ“๋ฐฐ์šด์ ๐Ÿ“

๋ˆ„์ ํ•ฉ์ด ๊ผญ ํ–‰์œผ๋กœ๋งŒ ์ง„ํ–‰๋˜๋Š” ๊ฒŒ ์•„๋‹Œ๋ฐ ์—ด๋กœ ์ˆ˜ํ–‰ํ•ด๋ณผ ์ƒ๊ฐ์€ ์ „ํ˜€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์œผ๋กœ๋„ ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ์ƒ๊ฐ์˜ ์ „ํ™˜์„ ํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ ๋  ๊ฒƒ ๊ฐ™๋‹ค