문제
https://school.programmers.co.kr/learn/courses/30/lessons/178870#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
투포인터를 이용하여 문제 풀이를 진행하였다.
start는 시작 인덱스, end는 끝 인덱스+1 로 잡았다
코드
class Solution {
public int[] solution(int[] sequence, int k) {
int start = 0;
int end = 1;
int sum = sequence[0];
int len = sequence.length;
int[] answer = new int [2];
while( end <= sequence.length && start < sequence.length ){
if(sum == k) {
if(end - start < len || (end == sequence.length && start == 0 && end - start == len)){
len = end-start;
answer[0] = start;
answer[1] = end-1;
}
sum -= sequence[start];
start++;
}
else if(sum < k) {
if(end >= sequence.length) break;
sum += sequence[end];
end++;
}
else {
sum -= sequence[start];
start++;
}
// System.out.println(sum+" "+end+" "+start);
}
// System.out.println(sum+" "+end+" "+start);
if(sum == k) {
if(end - start < len){
answer[0] = start;
answer[1] = end-1;
}
}
return answer;
}
}
문제
https://school.programmers.co.kr/learn/courses/30/lessons/178870#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
투포인터를 이용하여 문제 풀이를 진행하였다.
start는 시작 인덱스, end는 끝 인덱스+1 로 잡았다
코드
class Solution { public int[] solution(int[] sequence, int k) { int start = 0; int end = 1; int sum = sequence[0]; int len = sequence.length; int[] answer = new int [2]; while( end <= sequence.length && start < sequence.length ){ if(sum == k) { if(end - start < len || (end == sequence.length && start == 0 && end - start == len)){ len = end-start; answer[0] = start; answer[1] = end-1; } sum -= sequence[start]; start++; } else if(sum < k) { if(end >= sequence.length) break; sum += sequence[end]; end++; } else { sum -= sequence[start]; start++; } // System.out.println(sum+" "+end+" "+start); } // System.out.println(sum+" "+end+" "+start); if(sum == k) { if(end - start < len){ answer[0] = start; answer[1] = end-1; } } return answer; } }