https://www.acmicpc.net/problem/25916
예제는 통과하는데 계속 틀렸다고 해서 며칠 동안 계속 삽질했다.. ㅠ.ㅠ
구글링 해도 원하는 알고리즘대로 푼 글이 없어서 답답했는데 같은 투포인터 유형의 다른 문제를 풀다가 해답을 찾았다!
아래 글대로 풀었더니 풀렸다.. 감사합니다😭
https://maivve.tistory.com/223
정확히 어떤 케이스에서 틀린 건지는 아직 깨닫지 못했지만, 중복으로 처리되는 부분이 있었던 것으로 보인다.
Solution
import java.io.*;
import java.util.*;
public class B25916_싫은데요 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] hole = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
hole[i] = Integer.parseInt(st.nextToken());
}
int start=0, end=0, sum=0, count=0;
int max = 0;
while(start != N){
if(sum >= M){
sum -= hole[start++];
}
else if(end == N){
break;
}
else{
sum += hole[end++];
}
if(sum <= M && sum > max){
max = sum;
}
}
System.out.println(max);
}
}
투포인터 정복하러 갑니다 👽
'Java > 코딩테스트' 카테고리의 다른 글
[JAVA] 순열과 조합 구현하기 (1) | 2024.03.29 |
---|---|
[백준] 11659번 구간 합 구하기 4 (0) | 2024.01.29 |