https://www.acmicpc.net/problem/1806
문제
풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
long m = kb.nextLong();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = kb.nextInt();
}
int answer = 100001;
int sum=0, lt=0, rt=0;
while(true){
if(sum >= m){
sum -= arr[lt];
answer = Math.min(answer, (rt- lt));
lt++;
} else if(rt == n) {
break;
}else{
sum += arr[rt];
rt++;
}
}
if(answer == 100001){
System.out.println(0);
}else{
System.out.println(answer);
}
}
}
문제를 처음 읽고 투포인터 문제라는 것만 알 수 있다면 전혀 골드4 수준의 문제는 아니라고 생각한다. 알고리즘 강의에서 투포인터를 이미 접한 적이 있어서 어렵지 않게 해결 할 수 있었다.
(처음에 aswer를 100001이 아닌 1000001로 잘못 선언해서 고생 좀 했다....)
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 14916번. 거스름돈 (JAVA) (0) | 2024.01.15 |
---|---|
[백준] 1343번. 폴리오미노 (JAVA) (0) | 2024.01.15 |
[백준] 1920번. 수 찾기 (JAVA) (0) | 2023.01.12 |
[백준] 1654번. 랜선 자르기 (JAVA) (1) | 2023.01.11 |
[백준] 2839번. 설탕 배달 (JAVA) (0) | 2023.01.11 |