큐를 이용한 풀이 하지만 시간초과 오류
import Foundation
func solution(_ sequence:[Int], _ k:Int) -> [Int] {
var sum = 0
var count = sequence.count
var queue: [Int] = []
var result: [Int] = [sequence.count + 1, sequence.count + 1]
for index in 0..<sequence.count {
queue.append(sequence[index])
sum += sequence[index]
while k < sum { sum -= queue.remove(at: 0) }
if sum == k && queue.count <= count {
let newResult = [index - queue.count + 1, index]
if count == queue.count && result[0] < newResult[0] && result[1] < newResult[1] { continue }
count = queue.count
result = newResult
}
}
return result
}
투포인터를 활용한 풀이
import Foundation
func solution(_ sequence:[Int], _ k:Int) -> [Int] {
var left = 0
var right = 0
var sum = sequence[0]
var length = sequence.count
var result = [sequence.count + 1, sequence.count + 1]
while left < sequence.count && right < sequence.count {
let newLength = right - left
if sum == k && newLength <= length {
if !(length == newLength && result[0] < left) {
length = newLength
result = [left, right]
}
}
if sum <= k {
right += 1
if right == sequence.count { break }
sum += sequence[right]
} else {
sum -= sequence[left]
left += 1
}
}
return result
}
'프로그래머스 > Lv.2' 카테고리의 다른 글
[Swift] [3차] 방금그곡 (0) | 2023.05.13 |
---|---|
[Swift] 삼각 달팽이 (0) | 2023.04.30 |
[Swift] 롤케이크 자르기 (0) | 2023.04.29 |
[Swift] 숫자 변환하기 (0) | 2023.04.29 |
[Swift] 소수 찾기 (0) | 2023.04.29 |