๋ฌธ์ : https://www.acmicpc.net/problem/11659
ํ์๋ ์ฒ์์ ์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ์, ๊ตฌ๊ฐ ํฉ์ ํต์ฌ ์ด๋ก ๋ถ๋ถ์ ํฉ ๋ฐฐ์ด S๋ฅผ ๋ง๋๋ ๊ณต์์ด ์ดํด๊ฐ ๋์ง ์์๋ค.
๊ทธ๋์ ๊ทธ๋ฅ ๋ฐ๋ผ ์น๊ณ ๋๊ฒผ์๋๋ฐ, ์ด๋ฐ ์ต๊ด์ ์ข์ง ์์ ์ต๊ด์ด๋ผ๊ณ ํผ๋๋ฐฑ๋ฐ์,
ํ๋ํ๋ ๋ถ์ํ๋ฉด์ ๋ค์ ํ๊ณ ๋ ํ๊ณ ๊ทธ๋ฌ์๋ค. ๊ทธ๋ ๊ฒ 2๋ฒ ์ ๋ ํ์์ ๋๋ ๊ทธ ๊ณต์๊ณผ ์ ์ฌํ ์ฝ๋๋ฅผ ์งฐ์ผ๋ฉฐ,
3๋ฒ์งธ์๋ ๊ณต์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์งฐ๋ค. ์ฌ์ค ๊ณต์์ด๋ผ๊ธฐ ๋ณด๋จ ๊ทธ๋ฅ ๋์ ํฉ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด๋๊น ๊ณต์์ ํํ๋ก
์ ํ์๋ ๊ฒ์ด๋ค. ์ด๊ฒ ๋ฌด์จ ๋ง์ธ์ง๋ ํ๋ํ๋ ๋ถ์์ ํ๋ฉด ์ ์ ์๋ค. ์ง๊ธ๋ถํฐ ๊ทธ๊ฑธ ์์๋ณด์.
์ฐ์ ๋์ ํฉ์ด๋ ๋จ์ด์ ๋ํด์ ์๊ฐ์ ํด๋ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด, ์ซ์๊ฐ [1, 2, 3, 4, 5]๊ฐ ์์ผ๋ฉด ๋์ ํฉ์ [1, 1+2, 1+2+3,... , 1+2+3+4+5]
์ด๋ฐ ์์ผ๋ก ํ๋์ฉ ๋ํด๊ฐ๋ ํฉ์ ํํ์ด๋ค.
์ฆ, ํญ์ด ํ๋์ฉ ๋์ด๋ ๋๋ง๋ค, ํด๋นํ๋ ํญ์ ์๋ ์ซ์๋ฅผ ๋ํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ฑ
์์ ์ค๋ช
ํ ํฉ ๋ฐฐ์ด ๊ณต์์ ์๋ฆฌ๋ฅผ ์ฐ๋ฆฌ๋ ์ง๊ธ ์ดํด๋ฅผ ํ ๊ฒ์ด๋ค.
ํฉ ๋ฐฐ์ด์ S, ์ซ์ ๋ฐฐ์ด์ N์ด๋ผ๊ณ ๋๋ค๋ฉด, S[(ํ์ฌ ํญ)] = S[(์ด์ ํญ)] + N[(ํ์ฌํญ)] ์ด๋ ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ด ๋ด์ฉ์ ๊ธฐ์ตํ๊ณ ๋ฌธ์ ๋ฅผ ๋ด๋ณด์.
๋ฌธ์ ์์ ์๊ตฌํ๋ ๊ฒ์ ์
๋ ฅ๋ฐ๋ ์ฒซ๋ฒ์งธ ๊ฐ๋ถํฐ ๋ ๋ฒ์งธ ๊ฐ๊น์ง์ ๊ฐ์ ์๊ตฌํ๊ณ ์๋ค.
์์ ์ ๋์จ ๊ฒ์ผ๋ก ์๋ฅผ ๋ค์๋ฉด, [5,4,3,2,1]์ ๋์ ํฉ์ [5, 9, 12, 14, 15]์ด๋ค.
์ฌ๊ธฐ์์ 1ํญ~3ํญ๊น์ง์ ํฉ์ ๊ตฌํ๋ค๊ณ ์๊ฐ์ ํด๋ณด๋ฉด, 12๊ฐ ๊ทธ ๋ต์ด ๋ ์ ์์ ๊ฒ์ด๋ค. ์๋ํ๋ฉด 1~3ํญ์ ๋์ ํด์ ๋ํ ๊ฒ 12์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ผ 2ํญ~4ํญ๊น์ง์ ํฉ์ ๊ตฌํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? 2๋ฒ์งธ ํญ์์ 4๋ฒ์งธ ํญ๊น์ง ๋ํ๋ค๊ณ ํ๋ฉด ์ผ๋จ 1ํญ~4๋ฒ์งธ ํญ๊น์ง ๋ํ ๊ฒ์์ 1ํญ์ ๊ฐ์ ๋นผ๋ฉด ๋๋ฏ๋ก, 14-5 = 9 ์ด๋ ๊ฒ ๋๋ ๊ฒ์ด๋ค.
5ํญ ~ 5ํญ๊น์ง์ ํฉ์ ๊ตฌํ๋ค๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก 1๋ฒ์งธ ํญ์์ 5๋ฒ์งธ ํญ๊น์ง ๋ํ ๊ฒ์์ 4๋ฒ์งธ ํญ๊น์ง ๋ํ ๊ฒ์ ๋นผ๋ฉด ๋๋ฏ๋ก, 15-14=1 ์ด๋ ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
์ฒซ ๋ฒ์งธ ํญ๋ถํฐ ๋ํ ๊ฒ๊ณผ ์ต์ ๋ ๋ฒ์งธ ํญ๋ถํฐ ๋ํ ๊ฒ์ ๊ตฌ๋ณ์ ํด์ผ ํ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฑ
์์ ์๊ฐํ๋ ๋์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ [0, 5, 9, 12, 14, 15] ์ด๋ ๊ฒ ๋์ด์๋ค.
์ฆ, 1ํญ~3ํญ๊น์ง์ ํฉ์ ๊ตฌํ ๋์๋ 1ํญ~3ํญ๊น์ง ๋ํ ๊ฐ์ธ 12์์ 0์ ๋นผ๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ 12์ผ ํ
๋๊น.
๊ทธ๋ผ ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ ํจํด์ ์์๋ผ ์ ์๋ค.
์ฒซ ๋ฒ์งธ๋ก ์
๋ ฅ๋ฐ๋ ํญ์ i๋ผ๊ณ ํ๊ณ , ๋ ๋ฒ์งธ๋ก ์
๋ ฅ๋ฐ๋ ํญ์ j๋ผ๊ณ ํ์.
โ S[(ํ์ฌ ํญ)] = S[(์ด์ ํญ)] + N[(ํ์ฌํญ)] = S[(ํ์ฌํญ)] = S[(ํ์ฌํญ - 1)] + N[(ํ์ฌํญ)]
โก S[j] - S[i-1]
์ด์ ํญ์ด ์ ํ์ฌํญ - 1์ด๋๋ฉด, ์ด๊ฑธ ์ธ๋ฑ์ค๋ก ์๊ฐํ์ ๋,
์๋ฅผ ๋ค์ด 2๊ฐ ํ์ฌ ํญ์ด๋ผ ๊ฐ์ ํ๋ฉด, S[2] = S[1] + N[2] ์ด๋ฐ ํ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ผ ์ด์ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
import java.util.*;
import java.io.*;
public class BOJ_11659 {
public static void main(String[] args) throws IOException{
// TODO ๋ฐฑ์ค 11659
//์
๋ ฅ์ ๋นจ๋ฆฌ ๋ฐ๊ธฐ ์ํด BufferedReader ํด๋์ค๋ฅผ ์ด์ฉํจ.
//BufferedReader ํด๋์ค๋ ํ ์ค ๋จ์๋ก ์
๋ ฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์
//StringTokenizer ํด๋์ค๋ก ๋ฌธ์์ด์ ํ์ฑํด์ค์ผ ํจ
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
//N = ํญ์ ๊ฐ์
//M = ๋ฌธ์ ์์ ์๊ตฌํ ๊ฒ๋ค์ด ๋ช ๊ฐ์ธ์ง(์ง์๊ฐ ๋ช ๊ฐ์ธ์ง)
//sums = ๋์ ํฉ์ ์ ์ฅํ ๋ฐฐ์ด ๋ณ์
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
long[] sums = new long[N+1];
//๋์ ํฉ์ ๊ตฌํ๋ ๋ฐ๋ณต๋ฌธ
st = new StringTokenizer(br.readLine());
for(int i=1; i<=N; i++) {
sums[i] = sums[i-1] + Integer.parseInt(st.nextToken());
}
//์ง์์์ ์๊ตฌํ๋ ํญ๋ค์ ์
๋ ฅ๋ฐ๊ณ
//ํฉ์ ์ถ๋ ฅํจ
for(int i=0; i<M; i++) {
st = new StringTokenizer(br.readLine());
int index1 = Integer.parseInt(st.nextToken());
int index2 = Integer.parseInt(st.nextToken());
System.out.println(sums[index2] - sums[index1-1]);
}
}
}
'โJAVA > ๐ฉโ๐ปBOJ(๋ฐฑ์ค)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํฌ ํฌ์ธํฐ, JAVA] ๋ฐฑ์ค - 2467 (0) | 2022.09.19 |
---|---|
[๊ตฌ๊ฐํฉ, JAVA] ๋ฐฑ์ค - 10986 (0) | 2022.08.20 |
[๊ตฌ๊ฐํฉ, JAVA] ๋ฐฑ์ค - 11660 (0) | 2022.08.17 |
[๋ฐฐ์ด, JAVA]๋ฐฑ์ค - 1546๋ฒ (0) | 2022.08.16 |
[๋ฐฐ์ด, JAVA] ๋ฐฑ์ค - 11720๋ฒ (0) | 2022.08.16 |