728x90
반응형
△
Level 2 연습문제 (투 포인터)
Programmers 연속된 부분 수열의 합
아아아주 오랜만에 다시 잡은 펜.. 머리가 다 굳은건가 하핳하
투 포인터를 사용해 시작점과 끝점을 오른쪽으로 이동하며 합이 k인 수열의 index를 구하는 문제
sequence[end] 더해주기 전에 end < sequence.count 확인안해서 처음에 index 에러가 났다.
더해주기 전에 값이 있는 index인지 먼저 확인 해주기!
func solution(_ sequence:[Int], _ k:Int) -> [Int] {
var start: Int = 0
var end: Int = 0
var sum: Int = sequence.first ?? 0
var result: [Int] = []
while end < sequence.count {
if sum <= k {
if sum == k {
if result.isEmpty || (result[1] - result[0]) > (end - start) {
result = [start, end]
}
}
end += 1
if end < sequence.count {
sum += sequence[end]
}
} else {
sum -= sequence[start]
start += 1
}
}
return result
}
print(solution([1, 2, 3, 4, 5], 7)) // [2,3
print(solution([1, 1, 1, 2, 3, 4, 5], 5)) // [6,6]
print(solution([2, 2, 2, 2, 2], 6)) // [0,2]
반응형
'Algorithm > Programmers' 카테고리의 다른 글
| [Swift 알고리즘] Programmers 할인 행사 (0) | 2025.05.21 |
|---|---|
| [Swift 알고리즘] Programmers 가장 많이 받은 선물 (0) | 2024.08.12 |
| [Swift 알고리즘] Programmers 다음 큰 숫자 (0) | 2022.11.13 |
| [Swift 알고리즘] Programmers 피보나치 수 (0) | 2022.11.13 |
| [Swift 알고리즘] Programmers 멀리뛰기 (0) | 2022.11.13 |