[ํํธ ๋ฌธ์ 3-3] ์๋ค์ ํฉ2
๋ฐฑ์ค 2003๋ฒ
๋ฌธ์
N๊ฐ์ ์๋ก ๋ ์์ด A[1], A[2], …, A[N] ์ด ์๋ค. ์ด ์์ด์ i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง์ ํฉ A[i] + A[i+1] + … + A[j-1] + A[j]๊ฐ M์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ A[1], A[2], …, A[N]์ด ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ A[x]๋ 30,000์ ๋์ง ์๋ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
4 2
1 1 1 1
์์ ์ถ๋ ฅ 1
3
์์ ์ ๋ ฅ 2
10 5
1 2 3 4 2 5 3 1 1 2
์์ ์ถ๋ ฅ 2
3
<<ํ์ด>>
package sec01.hint3_1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class pjh_numberssum {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
StringTokenizer st1 = new StringTokenizer(str1);
int ans = 0;
int N = Integer.parseInt(st1.nextToken());
int M = Integer.parseInt(st1.nextToken());
System.out.println("๋ค์ ๋ฒ ์งธ ์ค์ ์
๋ ฅํ๋ผ");
String str2 = br.readLine();
StringTokenizer st2 = new StringTokenizer(str2);
int[] A = new int[N];
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st2.nextToken());
}
for (int i = 0; i < N; i++) {
int partsum = 0;
int totalsum = 0;
if (A[i] == M) {
ans++;
}
for (int j = i+1; j < N; j++) {
partsum += A[j];
totalsum = A[i] + partsum;
if (totalsum == M) {
ans++;
}
}
}
System.out.println(ans);
}
}
๋ฌธ์ ์์ฒด๋ ์ด๋ ต์ง ์๋ค. ๋ค๋ง, ๋ฌธ์ ๋ฅผ ์ฝ์ ๋ ์ดํดํ๊ธฐ๊ฐ ์์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค. ์กฐ๊ธ ๋ ์ต์ํด์ง ํ์๊ฐ ์๋ค.
๋ํ, ๋ฌธ์ ๋ฅผ ํ ๋ ์ด๋ ต๋ค๋ฉด ๊ฐ๋งํ ๋ฉ๋๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ๋ด๊ฐ ๋ฌด์์ ๋ชจ๋ฅด๋์ง ์ ํํ๊ฒ ํ์ ํ๋ ๋ฉํ์ธ์ง ๋ฅ๋ ฅ์ ๊ธฐ๋ฅผ ํ์๊ฐ ์๋ค.
๊ทธ๋ ๊ฒ ํ๋ ํจ์ฌ ๋ ๋ชฐ์ ํ๊ณ ๋จธ๋ฆฌ๊ฐ ์ ๋์๊ฐ๋ค.
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํํธ ๋ฌธ์ 3-5] ๊ทธ๋ฆฌ๋ (1) | 2023.10.06 |
---|---|
[ํํธ ๋ฌธ์ 3-4] ์ ํ (1) | 2023.10.06 |
[ํํธ ๋ฌธ์ 3-2] 2์ฐจ์ ๋ฐฐ์ด์ ํฉ (1) | 2023.10.05 |
[ํํธ ๋ฌธ์ 3-1] ํฐ๋ฆฐ๋๋กฌ (1) | 2023.10.05 |
[ํํธ ๋ฌธ์ 2-4] ๋ฌธ์์ด (0) | 2023.09.27 |
๋๊ธ