티스토리 뷰

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/70128

 

 

내 풀이

import Foundation

func solution(_ a:[Int], _ b:[Int]) -> Int {
    var saveArr: [Int] = []
    for (idx, num) in b.enumerated() {
        saveArr.append(num * a[idx])
    }
    let result: Int = saveArr.reduce(0, { $0 + $1})
    return result
}

solution([1,2,3,4], [-3,-1,0,2])

 

다른사람의 풀이

func solution(_ a:[Int], _ b:[Int]) -> Int {
	let result = zip(a, b).map { $0 * $1 }.reduce(0) { $0 + $1 }
    return result
}

 

배운것

methods(_:)

 

두 개의 시퀀스를 사용해 시퀀스 쌍을 만듭니다.

 

 

예제

// 두 시퀀스의 length가 같을경우
let words = ["one", "two", "three", "four"]
let numbers = 1...4

for (word, number) in zip(words, numbers) {
    print("\(word): \(number)")
}
// Prints "one: 1"
// Prints "two: 2
// Prints "three: 3"
// Prints "four: 4"

// 두 시퀀스의 length중 짧은쪽까지만 합쳐짐.

let naturalNumbers = 1...Int.max
let zipped = Array(zip(words, naturalNumbers))
// zipped == [("one", 1), ("two", 2), ("three", 3), ("four", 4)]

 

728x90