BOJ 4948번 부분합 ( 투포인터 ) JAVA
풀이
투포인터를 이용하는 문제입니다.
p1, p2 두 개의 int 변수를 선언하여, p2가 n이 될 때까지 연산을 계속해줍니다.
링크
https://www.acmicpc.net/problem/1806
소스 코드
package boj;
import java.util.Scanner;
public class Boj1806 {
static int n, s;
static int[] a;
static final int MAX = 987654321;
static int res = MAX;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
s = sc.nextInt();
a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int p1 = 0;
int p2 = 0;
int sum = 0;
while (true) {
if (sum >= s) {
sum -= a[p1++];
res = Math.min(p2 - p1 + 1, res);
} else if (p2 == n) {
break;
} else {
sum += a[p2++];
}
}
if (res == MAX) {
System.out.println(0);
} else
System.out.println(res);
}
}
'Algorithm' 카테고리의 다른 글
BOJ 7579번 앱 ( DP, 배낭 문제 ) JAVA (0) | 2021.04.10 |
---|---|
BOJ 2252번 줄 세우기 ( 위상 정렬 ) JAVA (0) | 2021.04.10 |
BOJ 2239번 스도쿠 ( 백트래킹 ) JAVA (0) | 2021.04.09 |
BOJ 1238번 파티 ( 다익스트라 ) JAVA (0) | 2021.04.08 |
BOJ 2589번 보물섬 ( BFS, Brute Force ) JAVA (0) | 2021.04.08 |