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 |
'프로그래머스 - 내 풀이 > 프로그래머스 Lv2' 카테고리의 다른 글
[C#]프로그래머스/거리두기 확인/BFS (0) | 2023.04.21 |
---|---|
[C#]프로그래머스/호텔 대실 (0) | 2023.04.20 |
프로그래머스/괄호 회전하기 (0) | 2023.04.14 |
프로그래머스/카카오프렌즈 컬러링북 (0) | 2022.12.12 |
프로그래머스/H-Index (0) | 2022.12.07 |