์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- boj2343
- programmers
- ์๋ฐ
- ์ฝ๋ฉํ ์คํธ
- ์ด๋ถํ์
- ๋ฐฑ์ค14502
- ์ด์งํ์
- ๋ฑ
- boj2792
- ๋ฐฑ์ค2346
- ๋ฐฑ์ค14889
- BOJ
- entitymanager
- ํ๊ดด๋์ง์์๊ฑด๋ฌผ
- ์๋ฃ๊ตฌ์กฐ
- BOJ3985
- jparepository
- binarysearch
- BOJ11724
- java
- BOJ #Java #1003 #DP
- ๋ฐฑ์ค 14888
- ๋ฐฑ์ค 12865
- ์๋ฌผ์ ์ ์ด์
- ๊ตฌํ
- Today
- Total
Hzim-dev
[Programmers] ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ - Java ๋ณธ๋ฌธ
๐ ๋ฌธ์ ๐
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;
}
}

๐๋ฐฐ์ด์ ๐
๋์ ํฉ์ด ๊ผญ ํ์ผ๋ก๋ง ์งํ๋๋ ๊ฒ ์๋๋ฐ ์ด๋ก ์ํํด๋ณผ ์๊ฐ์ ์ ํ ๋ชปํ๋ ๊ฒ ๊ฐ๋ค. ์์ผ๋ก๋ ๋งํ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์๊ฐ์ ์ ํ์ ํ๋ ์ฐ์ต์ ํด์ผ ๋ ๊ฒ ๊ฐ๋ค
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ํ์ ํฐ๋จ๋ฆฌ๊ธฐ 2346 - Java (0) | 2025.01.15 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์ด๋ถํ์ Binary Search (0) | 2024.07.26 |
[BOJ] ๋ณด์์์ 2792 - Java (0) | 2024.07.25 |
[BOJ] ๊ธฐํ ๋ ์จ 2343 - Java (1) | 2024.07.24 |
[Programmers] ์๋ฌผ์ ์ ์ด์ - Java (0) | 2024.07.23 |