728x90
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/178870
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
투포인터 알고리즘을 이용해 풀었으며, 딱히 막힘이 없었던 문제로
size는 sum=k일 때의 부분 배열의 길이로
1. 기존 size가 더 클 때는 문제 조건에 따라 당연히 left, right를 최신화
2. size가 같을 때는 더 앞의 부분 배열 idx값이 들어가야 한다.
class Solution {
public int[] solution(int[] sequence, int k) {
int left = 0;
int right = 0;
int sum = 0;
int size = sequence.length;
int ans1 = 0;
int ans2 = 0;
for(right=0; right<sequence.length; right++) {
sum += sequence[right];
while(sum > k) {
sum -= sequence[left];
left++;
}
if(sum == k) {
if(size > right-left) {
size = right-left;
ans1 = left;
ans2 = right;
}
else if(size == right-left) {
ans1 = Math.min(ans1, left);
ans2 = Math.min(ans2, right);
}
}
}
return new int[] {ans1, ans2};
}
}

728x90
300x250