programmers_연속된 부분 수열의 합_java
2023. 4. 28. 11:06ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/178870
class Solution {
public int[] solution(int[] sequence, int k) {
int[] answer = new int[2];
int head = 0;
int tail = 0;
int sum = sequence[0];
int leng = 987654321;
while(tail < sequence.length){
if(sum == k){ // 일치 -> tail 이동
if(leng > tail - head){ // 길이가 짧은 것 우선
leng = tail - head;
answer[0] = head;
answer[1] = tail;
}
if(tail == sequence.length-1) break; // tail이 인덱스 범위를 초과하는 경우 처리
sum += sequence[++tail];
}else if(sum > k){ // sum이 더 큰경우 -> head 이동
sum -= sequence[head++];
}else if(sum < k){ // sum이 더 작은경우 -> tail 이동
if(tail == sequence.length-1) break;
sum += sequence[++tail];
}
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_전력망을 둘로 나누기_java (0) | 2023.05.09 |
---|---|
programmers_[카카오 인턴] 수식 최대화_java (0) | 2023.05.02 |
programmers_[3차] 방금그곡_java (0) | 2023.04.26 |
programmers_행렬 테두리 회전하기_java (0) | 2023.04.22 |
programmers_괄호 변환_java (0) | 2023.04.22 |