import java.util.*;

/**
  테스트 1 〉 통과 (0.02ms, 73.7MB)
  테스트 2 〉 통과 (0.02ms, 81.8MB)
  테스트 3 〉 통과 (0.02ms, 93MB)
  테스트 4 〉 통과 (0.08ms, 73.3MB)
  테스트 5 〉 통과 (0.68ms, 97.1MB)
  테스트 6 〉 통과 (0.92ms, 78.1MB)
  테스트 7 〉 통과 (1.79ms, 88.4MB)
  테스트 8 〉 통과 (2.52ms, 77.9MB)
  테스트 9 〉 통과 (12.39ms, 86.3MB)
  테스트 10 〉 통과 (11.06ms, 133MB)
  테스트 11 〉 통과 (12.38ms, 126MB)
  테스트 12 〉 통과 (10.15ms, 124MB)
  테스트 13 〉 통과 (19.70ms, 122MB)
  테스트 14 〉 통과 (14.05ms, 139MB)
  테스트 15 〉 통과 (14.80ms, 137MB)
  테스트 16 〉 통과 (6.80ms, 140MB)
  테스트 17 〉 통과 (8.43ms, 121MB)
  테스트 18 〉 통과 (0.01ms, 73.3MB)
  테스트 19 〉 통과 (0.02ms, 76.4MB)
  테스트 20 〉 통과 (0.02ms, 92.6MB)
  테스트 21 〉 통과 (0.02ms, 86.7MB)
  테스트 22 〉 통과 (0.02ms, 72.6MB)
  테스트 23 〉 통과 (0.02ms, 73.3MB)
  테스트 24 〉 통과 (8.87ms, 129MB)
  테스트 25 〉 통과 (5.05ms, 122MB)
  테스트 26 〉 통과 (6.71ms, 124MB)
  테스트 27 〉 통과 (6.67ms, 143MB)
  테스트 28 〉 통과 (9.39ms, 124MB)
  테스트 29 〉 통과 (9.20ms, 144MB)
  테스트 30 〉 통과 (10.53ms, 128MB)
  테스트 31 〉 통과 (0.01ms, 85.3MB)
  테스트 32 〉 통과 (0.01ms, 69.4MB)
  테스트 33 〉 통과 (0.01ms, 79.3MB)
  테스트 34 〉 통과 (0.02ms, 73.2MB)
**/

class Solution {
    public int[] solution(int[] sequence, int k) {
        
        int length = Integer.MAX_VALUE;
        int startIdx = -1, endIdx = -1;
        
        int start = 0, end = 0, sum = 0;
        
        while(end < sequence.length) {
            sum += sequence[end++];
            
            while(sum > k && start < end) {
                sum -= sequence[start++];
            }
            
            if(sum == k && length > end - start) {
                length = end - start;
                startIdx = start;
                endIdx = end-1;
            }
            
            
        }
        
        return new int[]{startIdx, endIdx};
    }
}

'Algorithm' 카테고리의 다른 글

P131127_할인행사.java  (0) 2025.05.12
P159993_미로탈출.java  (0) 2025.05.04
거리 두고 싶다...  (2) 2025.04.20
[programmers] 충돌위험찾기_340211 java  (0) 2025.04.07
[programmers] 호텔 대실_155651 java  (0) 2025.03.31

+ Recent posts