https://school.programmers.co.kr/learn/courses/30/lessons/92344
๋ด ํด๋ต
(1) ์ผ๋ฐ์ ์ธ for๋ฌธ ์ฌ์ฉ. ์คํฌ์ ์ฒ๋ฆฌํ ๋๋ง๋ค 2์ค for๋ฌธ์ ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<vector<int>> skill) {
int answer = 0;
for(const auto& s : skill)
{
for(int r = s[1]; r <= s[3]; ++r)
for(int c = s[2]; c <= s[4]; ++c)
{
int degree = s[0] == 1 ? -s[5] : s[5];
board[r][c] += degree;
}
}
for(int n = 0; n < board.size(); ++n)
for(int m = 0; m < board[0].size(); ++m)
{
if(board[n][m] > 0)
++answer;
}
return answer;
}
(2) dp - ๋์ ํฉ ์ฌ์ฉ
๋์ ํฉ ๊ณผ์
1. ๋์ ํฉ์ ์ ์ฅํ ๋ฐฐ์ด์ ๋ง๋ ๋ค.
2. ๋์ ํฉ์ ์ ์ฉํ ์์ญ์ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ํ ๊ฐ(-d)์ ๋ฃ๋๋ค.
3. ๋์ ํฉ ์์ญ๋ฐ์ ๋ํ ๊ฐ์ ์์ํ ๊ฐ(+d)์ ๋ฃ๋๋ค.
4. ๊ฐ๋ก-์ธ๋ก ๋ฐฉํฅ์ผ๋ก ํ์ฅํ๋ค.
4-1. ๊ฐ๋ก ๋ฐฉํฅ ํ์ฅ(→)
4-2. ์ธ๋ก ๋ฐฉํฅ ํ์ฅ (↓)
5. ๋์ ํฉ ๋ฐฐ์ด ์์ฑ!
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<vector<int>> skill) {
int answer = 0;
vector<vector<int>> dg(board.size()+1, vector<int>(board[0].size()+1));
for(const auto& s : skill)
{
int degree = s[0] == 1 ? -s[5] : s[5];
// ๋์ ํฉ
dg[s[1]][s[2]] += degree;
// ๋์ ํฉ ์์ญ ๋ฐ ์ฒ๋ฆฌ
dg[s[1]][s[4]+1] -= degree; // ๊ฐ๋ก ์์ญ ๋ฐ
dg[s[3]+1][s[2]] -= degree; // ์ธ๋ก ์์ญ ๋ฐ
dg[s[3]+1][s[4]+1] += degree; // ๊ฐ๋กx์ธ๋ก ์์ญ ๋ฐ
}
// ๋์ ํฉ ๊ฐ๋ก ๋ฐฉํฅ ํ์ฅ
for(int n = 0; n < dg.size(); ++n)
for(int m = 1; m < dg[0].size(); ++m)
{
dg[n][m] += dg[n][m-1];
}
// ๋์ ํฉ ์ธ๋ก ๋ฐฉํฅ ํ์ฅ
for(int m = 0; m < dg[0].size(); ++m)
for(int n = 1; n < dg.size(); ++n)
{
dg[n][m] += dg[n-1][m];
}
// ํ๊ดด๋์ง ์๋ ๊ฑด๋ฌผ ์ฒดํฌ
for(int n = 0; n < board.size(); ++n)
for(int m = 0; m < board[0].size(); ++m)
{
if(board[n][m] + dg[n][m] > 0)
++answer;
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ๊ฒฝ์ฃผ๋ก ๊ฑด์ค(C++) (1) | 2023.05.19 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ ์ ์ ์ถ ์ค์ผ์ค๋ง (C++) (0) | 2023.05.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ๊ฐ์ฅ ๋จผ ๋ ธ๋(C++) (0) | 2023.05.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (C++) (0) | 2023.05.12 |
ํ๋ก๊ทธ๋๋จธ์ค / level.3 / ์ ๊ตญ์ฌ์ฌ(C++) (0) | 2023.05.11 |