Tags
- ๊ต์ฌ
- LV2
- PGM
- sort
- queue
- ๊ตฌํ
- DP
- ๋ฐฑํธ๋ํน
- greedy
- SpringBoot
- ๋ฌธ์์ด
- ๊ทธ๋ํ ์ด๋ก
- ๊น์ด ์ฐ์ ํ์
- ๊ทธ๋ํ ํ์
- BOJ
- stack
- Java
- Study
- ์๋ฃ๊ตฌ์กฐ
- BFS
- Python
- ์ํ
- Dynamic Programming
- ์ ์๋ก
- ์๋ฎฌ๋ ์ด์
- ์ ๋ ฌ
- dfs
- ๋๋น ์ฐ์ ํ์
- Brute Force Algorithm
- CodingTest
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_11669 : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- 2์ฐจ์ ๋ฐฐ์ด์ ๊ตฌ๊ฐ ํฉ์ ์ถ๋ ฅํ๋ค.
- ์๊ฐ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ตฌ๊ฐ ํฉ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํ๋ค.
- i = 1์ผ๋์ j = 1 ๋ 1์ฐจ์ ๋ฐฐ์ด์ ๊ตฌ๊ฐ ํฉ ์ฑ์ฐ๊ธฐ ๊ณต์์ด ๊ฐ๋ค : sum[i] = sum[i-1] + arr[i]
- 2์ฐจ์ ๋ฐฐ์ด ๊ตฌ๊ฐํฉ ๋ฐฐ์ด์ ์ฑ์ฐ๋ ๊ณต์ : sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1] + arr[i][j]
- ๊ตฌํ๋ ค๋ ์ธ๋ฑ์ค์ ์์ชฝ๊ณผ ์ผ์ชฝ ๊ฐ์ ํฉํ๊ณ , ์ผ์ชฝ ์๋ ๊ฒน์น๋๊น ๋นผ์ค๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ ๋ ฅ๋ ๊ฐ์ ๋ฃ์ผ๋ฉด ๊ตฌ๊ฐ ํฉ ๋ฐฐ์ด ์ค๋น ์๋ฃ.
- ์
๋ ฅ๋ฐ์ ์ขํ ๋ฒ์์ ํฉ์ ์ถ๋ ฅํ๋ค.
- x1,y1 ๋ถํฐ x2, y2 ๋ฒ์์ ํฉ : sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1] + sum[x1-1][y1-1]
- ๊ตฌ๊ฐ ํฉ์์ ๊ฐ์ ๊ตฌํ ๋ฒ์์ ์ผ์ชฝ์ค๊ณผ ์์ชฝ ์ค์ ๋นผ์ฃผ๊ณ , ๊ฒน์น๋ ์ผ์ชฝ์ ํ ์นธ์ ๋ค์ ๋ํด์ค๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int arr[][] = new int[n+1][n+1];
long sum[][] = new long[n+1][n+1];
for (int i = 1; i <= n; i++){ // ์
๋ ฅ ๋ฐ๊ธฐ
st = new StringTokenizer(br.readLine());
for (int j = 1; j <= n; j++){
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i = 1; i <= n; i++){ // ๊ตฌ๊ฐ ํฉ
for (int j = 1; j <= n; j++){
sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1] + arr[i][j];
}
}
for (int i = 0; i < m; i++){ // ๊ตฌ๊ฐ ํฉ ์ถ๋ ฅ
st = new StringTokenizer(br.readLine());
int x1 = Integer.parseInt(st.nextToken());
int y1 = Integer.parseInt(st.nextToken());
int x2 = Integer.parseInt(st.nextToken());
int y2 = Integer.parseInt(st.nextToken());
System.out.println(sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1-1][y1-1]);
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์
๋ ฅ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด arr์ ๊ตฌ๊ฐ ํฉ์ ์ ์ฅํ ๋ฐฐ์ด sum์ ์ธ๋ฑ์ค๋ 1~n์ ์ฌ์ฉํ๋ค.
- i์ j๋ 1~n
- ์ฌ์ฉํ์ง ์๋ 0๋ฒ ์ธ๋ฑ์ค๋ค์ 0์ผ๋ก ์ด๊ธฐํ ๋์ด ์๋ค. (๊ณต์์ ์ฌ์ฉํ ๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๊ธฐ ์ํด์)
๐ธ end ๐ธ
- ์ฒ์์ 1์ฐจ์ ๋ฐฐ์ด ๊ตฌ๊ฐ ํฉ์ ๋จ์ ๋ฐ๋ณตํ๋ฉด ์๊ฐ์ด ๋ ์ค ์๊ณ , ์ด์๋ง ๊ตฌ๊ฐ ํฉ์ ์ฌ์ฉํ๊ณ ํ์ ์ง์ ๋ํด์ฃผ๋ ์์ผ๋ก ๊ตฌํํ๋ค.
- x์ y๋ฅผ ๋ฐ๋๋ก ์ฌ์ฉํด์ 1ํ ํ๋ฆฌ๊ณ , ์๊ฐ์ด๊ณผ๊ฐ ๋๋๊ฑธ ํ์ธํ๋ค ๊ต์ฌ์ ํ์ด๋ฅผ ๋ณด๋ฉฐ ํ์๋ค.
- 2์ฐจ์ ๋ฐฐ์ด์ ๊ตฌ๊ฐ ํฉ์ ์ ๋ง ์๊ฐ์ง ๋ชปํ ๋ฐฉ์์ด๋ผ ์ข์ ๊ณต๋ถ๊ฐ ๋์๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_10986 : ๋๋จธ์ง ํฉ (0) | 2022.09.23 |
---|---|
BOJ_1384 : ๋ฉ์์ง (0) | 2022.09.23 |
BOJ_1380 : ๊ท๊ฑธ์ด (0) | 2022.09.22 |
BOJ_1343 : ํด๋ฆฌ์ค๋ฏธ๋ ธ (0) | 2022.09.21 |
BOJ_1340 : ์ฐ๋ ์งํ๋ฐ (0) | 2022.09.20 |