[๋ฐฑ์ค] ๐ฅ 11660 ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5
๐ ๋์ด๋
๐ฅ Silver 1
๐ ๋ฌธ์
https://www.acmicpc.net/problem/11660
๐ ํ์ด
์ด ๋ฌธ์ ๋ฅผ ์ฒ์ ๋ดค์๋, ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ฐ๋ก ๊ฐ์ด ์กํ์ง๋ ์์๋ค.
๊ทธ๋์ ์ด์ ์ ํ์ด๋ณธ ๋์ ํฉ ๋ฌธ์ ๋ค์ ๋ ์ฌ๋ฆฌ๋ฉฐ ์ฐฌ์ฐฌํ ๊ณ ๋ฏผํด ๋ณด์๋ค.
๊ฒฐ๊ตญ ๋ชจ๋ ๋์ ํฉ ๋ฌธ์ ๋ค์ ์ด์ ๊น์ง์ ์ซ์๋ค์ ๋ํ ๋์ ํฉ ๋ฐฐ์ด์ด ์์ด์ผํ๊ณ , ๊ทธ ๋์ ํฉ ๋ฐฐ์ด์ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ๋์ง๊ฐ ๊ฐ์ฅ ์ค์ํ๋ค.
๊ทธ๋์ ๋์ ํฉ ๋ฐฐ์ด์๋ ์ด์ ์ขํ๊ฐ๊น์ง์ ๋ชจ๋ ๊ฐ์ ๋ํ ํ, ๋ฃ๊ธฐ๋ก ํ์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ณ์ฐ์ ํ ๋๋ ํ์ฌ (x2, y2)๊ฐ์์ (x1 - 1, y2)์ (x2, y1 - 1)์ ๋นผ๊ณ (x1 - 1, y1 - 1)๋ฅผ ๋ํด์ฃผ์๋ค.
๊ทธ๋ฌ์ ๋ค์ ์ฝ๋์ ๊ฐ์ด ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํ์ด ๋์๋ค.
๐ Code
package PS;
import java.io.*;
import java.util.*;
public class N11660 {
static int[][] numbers;
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());
numbers = new int[N + 1][N + 1];
for (int i = 0; i <= N; i++) {
numbers[i][0] = 0;
numbers[0][i] = 0;
}
for (int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 1; j <= N; j++) {
MakePrefixSum(i, j, Integer.parseInt(st.nextToken()));
}
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
PrefixSum(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
}
static void MakePrefixSum(int x, int y, int value) {
numbers[x][y] = numbers[x][y - 1] + numbers[x - 1][y] - numbers[x - 1][y - 1] + value;
}
static void PrefixSum(int x2, int y2, int x1, int y1) {
int result = numbers[x1][y1] - numbers[x2 - 1][y1] - numbers[x1][y2 - 1] + numbers[x2 - 1][y2 - 1];
System.out.println(result);
}
}
package (์ด๋ฆ); ๋ฅผ ๋๊ณ , class ์ด๋ฆ์ Main
์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐