๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.3 : ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฑด๋ฌผ (2022 KAKAO)

xxilliant 2025. 5. 9. 12:48
728x90
๋ฐ˜์‘ํ˜•

 

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

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 3. ์นด์นด์˜ค ๊ธฐ์ถœ

์‰ฌ์›Œ๋ณด์ด๋Š” ๋ฌธ์ œ์ธ๋ฐ, ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ ๋•Œ๋ฌธ์— ์• ๋จน์—ˆ๋‹ค.

 

์ •์„์ ์ธ ํ’€์ด๋Š” ๋ˆ„์ ํ•ฉ ์‚ฌ์šฉ์ด์—ˆ๋‹ค!

๋‹ค๋ฅธ ๋งต ๋ฌธ์ œ์—์„œ๋„ ์“ฐ์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ, ์ž˜ ์•Œ์•„๋‘ฌ์•ผ๊ฒ ๋‹ค.

 

 

 

์ถœ์ฒ˜ ์นด์นด์˜คํ…Œํฌ ๋ฌธ์ œ ํ’€์ด : https://tech.kakao.com/posts/488

 

2022 ์นด์นด์˜ค ์‹ ์ž… ๊ณต์ฑ„ 1์ฐจ ์˜จ๋ผ์ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ for Tech developers ๋ฌธ์ œํ•ด์„ค - tech.kakao.com

์ง€๋‚œ 2021๋…„ 9์›” 11์ผ ํ† ์š”์ผ ์˜คํ›„ 2์‹œ๋ถ€ํ„ฐ 7์‹œ๊นŒ์ง€ 5์‹œ๊ฐ„ ๋™์•ˆ 2022 ...

tech.kakao.com

 

 

 

1. ๋ธŒ๋ฃจํŠธ ํฌ์Šค : ํšจ์œจ์„ฑ 0%๐Ÿซ 

let gameMap;

const updateMap=(type,r1,c1,r2,c2,degree)=>{
    for(let i=r1; i<=r2; ++i){
        for(let j=c1; j<=c2; ++j){
            if(type==1) gameMap[i][j] -= degree;
            if(type==2) gameMap[i][j] += degree;
        }
    }
}

const countSaveBuilding=()=>{
    let x = gameMap.length;
    let y = gameMap[0].length;
    let ans = 0;
    for(let i=0; i<x; ++i){
        for(let j=0; j<y; ++j){
            if(gameMap[i][j]>0) ans++;
        }
    }
    return ans;
}

function solution(board, skill) {
    var answer = 0;
    gameMap = board;
    for(let i=0; i<skill.length; ++i){
        let [type, r1, c1, r2, c2, degree] = skill[i];
        updateMap(type,r1,c1,r2,c2,degree);
    }
    answer = countSaveBuilding();
    return answer;
}

 

 

2. ๋ˆ„์ ํ•ฉ ์‚ฌ์šฉ ์ •๋‹ต ํ’€์ดโ€ผ๏ธ

function solution(board, skill) {
    var answer = 0;
    let x = board.length;
    let y = board[0].length;
    let gameMap = Array.from({length:x+1},()=>new Array(y+1).fill(0));
    
    for(let [type, r1, c1, r2, c2, degree] of skill){
        const d = (type == 1 ? -1*degree : degree);
        gameMap[r1][c1] += d;
        gameMap[r1][c2+1] -= d;
        gameMap[r2+1][c1] -= d;
        gameMap[r2+1][c2+1] += d;
    }
    
    for(let i=0; i<=x; ++i){
        for(let j=1; j<=y; ++j){
            gameMap[i][j] += gameMap[i][j-1];
        }
    }
    for(let j=0; j<=y; ++j){
        for(let i=1; i<=x; ++i){
            gameMap[i][j] += gameMap[i-1][j];
        }
    }
    
    for(let i=0; i<x; ++i){
        for(let j=0; j<y; ++j){
            board[i][j] += gameMap[i][j];
            if(board[i][j]>0) answer++;
        }
    }
    
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•