Algorithm

SwiftUI: 연속 부분 수열 합의 개수

songmoro 2024. 3. 18. 18:27
728x90

프로그래머스 연속 부분 수열 합의 개수

 

앞과 뒤가 이어진 수열(= 연속 수열)에서 도출 될 수 있는 합의 개수를 찾는 문제

 

Set을 사용한 이중 for문으로 구현

 

func solution(_ elements:[Int]) -> Int {
    var numbers = Set<Int>()
    
    for i in 0..<elements.count {
        var number = 0
        
        for j in i..<(i + elements.count) {
            number += elements[j % elements.count]
            numbers.insert(number)
        }
    }
    
    return numbers.count
}

// [7]          [9]          [1]          [1]          [4]
// [7, 9]       [9, 1]       [1, 1]       [1, 4]       [4, 7]
// = 16 10 2 5 11
// [7, 9, 1]    [9, 1, 1]    [1, 1, 4]    [1, 4, 7]    [4, 7, 9]
// = 17 11 6 12 20
// [7, 9, 1, 1] [9, 1, 1, 4] [1, 1, 4, 7] [1, 4, 7, 9] [4, 7, 9, 1]
// = 18 15 13 21
// [7, 9, 1, 1, 4]

//    elements    result
//    [7,9,1,1,4]    18
//    1 = [1, 4, 7, 9]
//    2 = [2, 5, 10, 11, 16]
//    3 = [6, 11, 12, 17, 20]
//    4 = [13, 15, 18, 21]
//    5 = [22]
//    n = [1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22]
728x90