https://www.acmicpc.net/problem/1806
1806번: 부분합
첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다.
www.acmicpc.net
문제
풀이
투 포인터 활용 문제이다. start, end를 0에서 시작하여 목표값 target 보다 크거나 같으면 start 전진,
target이 더 크면 end 전진 , end가 전진하다가 끝에 다다르면 종료.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n = Integer.parseInt(input[0]); long target = Long.parseLong(input[1]);
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int start=0,end=0,sum=0,min=100001;
while(true){
if(sum >= target){
sum-=arr[start++];
min = Math.min((end-start)+1,min);
}else if(end == n)
break;
else
sum+=arr[end++];
}
if(min==100001)
System.out.println(0);
else
System.out.println(min);
}
}
|
cs |
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [2252] 줄 세우기 JAVA (0) | 2021.09.09 |
---|---|
[BOJ] 백준 [1197] 최소 스패닝 트리 JAVA (0) | 2021.09.09 |
[BOJ] 백준 [3273] 두 수의 합 JAVA (0) | 2021.09.08 |
[BOJ] 백준 [1654] 랜선 자르기 JAVA (0) | 2021.09.06 |
[BOJ] 백준 [10816] 숫자카드2 JAVA (0) | 2021.09.06 |