[Javascript/PGS] Lv.3 : ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ (2022 KAKAO)
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;
}