1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
 
public class Solution
{
    public int[] solution(int[] sequence, int k)
    {
        int start = 0
        int end = 0
        int sum = 0;
        int minLength = int.MaxValue; 
        int[] answer = new int[2];
 
        //끝점에 도달할 때 까지 반복
        while (end < sequence.Length)
        {
            //끝점의 값을 sum에 추가 (맨처음엔 시작점과 끝점이 같음)
            sum += sequence[end];
 
            //합이 k 이상인 경우 시작점을 오른쪽으로 이동해서 구간을 줄이며 검색한다.
            while (sum >= k)
            {
                // 합이 k인 경우
                if (sum == k)
                {
                    //현재 저장된 최소값보다 길이가 짧다면, 답을 갱신해준다
                    if ((end - start) < minLength)
                    {
                        minLength = end - start;
                        answer[0= start;
                        answer[1= end;
                    }
                }
 
                //다시 검색할 때는 없어진 구간만큼 합에서 뺀다.
                sum -= sequence[start];
                start++;
            }
 
            //끝점 이동
            end++;
        }
 
        return answer;
    }
}
cs

+ Recent posts