배열 for문으로 돌리니까 시간초과 -> 풀이 보니까 투포인터 알고리즘..
import java.io.*;
import java.util.*;
class Solution {
static int[] answer;
public int[] solution(int[] sequence, int k) {
int[] answer = new int[]{0,sequence.length-1};
int left = 0;
int right = 1;
int sum = sequence[0];
while(left<right){
if(sum==k){
if(right-1-left<answer[1]-answer[0]){
answer[0] = left;
answer[1] = right-1;
}
sum -= sequence[left++];
//left++;
}else if(sum>k){
sum -= sequence[left++];
}else if(right<sequence.length){
sum += sequence[right++];
}else{
break;
}
}
return answer;
}
}
투포인터 알고리즘을 아직 정리하지 못해서 떠올리지 못했다.
이해는 했으나 다음에 한번 더 정리해볼것.
오늘의 회고
- 알고리즘 문제를 고민하다가 안되면 포기하게 되는데 그래도 끝까지 잘 생각해보자
- 내일(4/13) 학습 예정 : 스프링 공부한 부분 정리
'algorithm > 문제 풀이' 카테고리의 다른 글
99클럽 코테 스터디 14일차 TIL - 프로그래머스 JadenCase 문자열 만들기 (0) | 2024.04.14 |
---|---|
99클럽 코테 스터디 13일차 TIL - 백준 15654 (N과 M (5)) (0) | 2024.04.13 |
99클럽 코테 스터디 11일차 TIL - 백준 14888 (연산자 끼워넣기) (0) | 2024.04.11 |
99클럽 코테 스터디 10일차 TIL - 프로그래머스 이진 변환 반복하기 (0) | 2024.04.10 |
99클럽 코테 스터디 9일차 TIL - 백준 1697번 (숨바꼭질) (0) | 2024.04.09 |