๐ [๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ ํ์ด] Q.11441 ํฉ ๊ตฌํ๊ธฐ ๋ฌธ์ ํ์ด - java
๐ ๋ฌธ์
https://www.acmicpc.net/problem/11441
N๊ฐ์ ์ A1, A2, โฆ, AN์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค. ์ด M๊ฐ์ ๊ตฌ๊ฐ i, j๊ฐ ์ฃผ์ด์ก์ ๋, i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์ ๊ทผ๋ฒ
Q.11441 ํฉ ๊ตฌํ๊ธฐ ๋ฌธ์ ์ ๋๋ค.
N๊ฐ์ ์๊ฐ A1 A2 โฆ An ๊น์ง ์ฃผ์ด์ก์ ๋
M๊ฐ์ ๊ตฌ๊ฐ์ด i,j๋ก ์ฃผ์ด์ง๋๋ค.
M๊ฐ์ ์ฃผ์ด์ง ๊ตฌ๊ฐ i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง ํฉ๋ค M๊ฐ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ ๋ฌธ์ ์ ๋๋ค.
M๋ฒ ๋์ ๊ทธ๋ฅ i๋ฒ์งธ ๋ถํฐ j๋ฒ์งธ ๊น์ง ํฉ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง
์ข ๋ ํจ์จ์ ์ธ ํ์ด๋ฅผ ์ํด ๋์ ํฉ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒ์๋ถํฐ ๋ง์ง๋ง j๋ฒ์งธ๊น์ง์ ํ๋ฒ์ for๋ฌธ์ผ๋ก ๋์ ํฉ๋ค์ ๊ตฌํ ํ
์ด ๊ฐ๋ค์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
i๊ฐ 2์ด๊ณ j๊ฐ 4์ธ ๊ตฌ๊ฐ์ ํฉ์ ๊ตฌํด์ผํ๋ค๋ฉด
a2 + a3 + a4 ์ ํฉ์ด ๋ต์ผ ๊ฒ์ ๋๋ค.
์ด ๊ฐ์ a4๊น์ง์ ๋์ ํฉ - a2๊น์ง์ ๋์ ํฉ + a2 ๊ฐ๊ณผ ๊ฐ์ต๋๋ค.
sum[i] = sum[i-1]+num[i];
a4 ๊น์ง์ ๋์ ํฉ a1 + a2 + a3 + a4
a2 ๊น์ง์ ๋์ ํฉ -a1 - a2
a2 ์ ๊ฐ +a2
๊ฒฐ๊ณผ =>a2 + a3 + a4
์ด๋ฐ ์์ผ๋ก ๋์ ํฉ๋ค์ ์ด์ฉํ๋ฉด ์ฃผ์ด์ง๋ M๊ฐ์ ๊ตฌ๊ฐ์ ํฉ๋ค์ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
๐ป ์ฝ๋
package problem.prefix_sum;
import java.io.*;
public class Main_11441 {
static int sum[];
static int num[];
static BufferedReader br;
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static int N = -1;
static int M = -1;
static StringBuilder sb;
public static void main(String[] args) throws IOException {
sb = new StringBuilder();
br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
num = new int[N+1];
sum = new int[N+1];
String in[] = br.readLine().split(" ");
for(int i=1; i<=N; i++){
num[i] = Integer.parseInt(in[i-1]);
}
init();
M = Integer.parseInt(br.readLine());
for(int a=0; a<M; a++){
String input[] = br.readLine().split(" ");
int i = Integer.parseInt(input[0]);
int j = Integer.parseInt(input[1]);
solve(i,j);
}
bw.write(sb.toString());
br.close();
bw.flush();
bw.close();
}
public static void init(){
for(int i=1; i<=N; i++){
sum[i] = sum[i-1]+num[i];
}
}
public static void solve(int start, int end){
int result = sum[end] - sum[start-1];
sb.append(result+"\n");
}
}