๋ฌธ์
์ N๊ฐ๊ฐ ์ฃผ์ด์ก์ ๋, i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์ ์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํฉ์ ๊ตฌํด์ผ ํ๋ ๊ตฌ๊ฐ i์ j๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ด M๊ฐ์ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง ํฉ์ ์ถ๋ ฅํ๋ค.
์ ํ
- 1 ≤ N ≤ 100,000
- 1 ≤ M ≤ 100,000
- 1 ≤ i ≤ j ≤ N
ํด๋น ๋ฌธ์ ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(1)์ด ์๋๋ฉด ์๊ฐ์ด๊ณผ๋ก ํ๋ฆฐ๋ค.
๋ฐ๋ผ์, ๋ฐ๋์ ๊ตฌ๊ฐํฉ ๊ณต์์ผ๋ก ํ์ด์ผ ํ๋ค.
๐ก๊ตฌ๊ฐํฉ ๊ณต์? S[ i ] = S[ i - 1 ] + A[ i ]

1. ๋ฐฐ์ด A์ Scanner๋ฅผ ํตํด ์ ๋ ฅํ ๊ฐ์ N๋ฒ ๋ฐ๋ณตํ์ฌ ๋ด๋๋ค.
2. ๊ตฌ๊ฐํฉ ๊ณต์์ ์ ์ฉํด ํฉ ๋ฐฐ์ด S๋ฅผ ๋ง๋ค์ด ์ค๋ค.
3. M์ด 0์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ, ๊ณ์ฐ ํ ์ถ๋ ฅํด์ค๋ค.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] a = new int[n]; // ์
๋ ฅ ๋ฐ์ ์์ ๋ฐฐ์ด
long[] sum = new long[n]; // ๊ตฌ๊ฐํฉ์ ์ ์ฉํ ๋ฐฐ์ด. ์๊ฐ ์ปค์ง ์ ์์ด long์ผ๋ก..
for(int i = 0; i < n; i++) {
a[i] = sc.nextInt();
if(i == 0) sum[i] = a[i];
else sum[i] = sum[i-1] + a[i];
}
int start = 0;
int end = 0;
while(m != 0) {
start = sc.nextInt();
end = sc.nextInt();
if(start != 1) System.out.println(sum[end - 1] - sum[start - 2]);
else System.out.println(sum[end - 1]);
m--;
}
}
}'๐ Algorithm > etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์๋ฐ(Java) - ๋ํ๊ธฐ ์ฌ์ดํด (2) | 2023.02.06 |
|---|---|
| ์๋ฐ(Java) - 10์ง์ 2์ง์ ๋ณ๊ฒฝํ๊ธฐ (0) | 2023.02.06 |
| ์๋ฐ(Java) - ์ซ์ ์ฐพ๊ธฐ (0) | 2023.01.19 |
| ์๋ฐ(Java) - ์ํธ ์ฒดํฌ (0) | 2023.01.18 |
| ์๋ฐ(Java) ํ์ ์ง์ ๋๋์ด ๋ด๊ธฐ (1) | 2023.01.12 |