- 코드
정답 코드 : 입력한 배열 중 연속된 수의 합이 S이상일 때의 최소길이를 찾는 것이었다. 투 포인터를 사용하면 될 것 같아서 투포인터를 활용하여 풀었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
int[] array = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++)
array[i] = Integer.parseInt(st.nextToken());
int start = 0, end = 0, sum = 0, answer=N+1,length=0;
while (true) {
if (sum >= S) {
answer = Math.min(length, answer);
sum -= array[start++];
length--;
} else if(end >= N) {
break;
}
else {
sum += array[end++];
length++;
}
}
if (answer==N+1) {
System.out.println(0);
} else {
System.out.println(answer);
}
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 15650번 : N과 M (2) (0) | 2020.09.01 |
---|---|
[JAVA] 백준 15649번 : N과 M (1) (0) | 2020.09.01 |
[JAVA] 백준 14003번 : 가장 긴 증가하는 부분 수열 5 (0) | 2020.08.31 |
[JAVA] 백준 14002번 : 가장 긴 증가하는 부분 수열 4 (0) | 2020.08.31 |
[JAVA] 백준 13022번 : 늑대와 올바른 단어 (0) | 2020.08.29 |