HyeonGyu IM 2020. 11. 6. 12:47

 문제. 

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)


제한사항

  • a, b의 길이는 1 이상 1,000 이하입니다.
  • a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

 풀이.

 // 나의풀이
func solution(_ a:[Int], _ b:[Int]) -> Int {
    var result = 0
    for i in 0..<a.count {
        result += a[i] * b[i]
    }
    return result
}


 // 인상깊은 풀이
func solution(_ a:[Int], _ b:[Int]) -> Int {
    var b = b
    return a.map{ $0 * b.removeFirst()}.reduce(0,+)
}
  • ㅠ.ㅠ 번호가 하나로 나오는 문제여서 리듀스로 어떻게 풀수없나... 자바스크립트처럼 초기값을 안정해 줄수는 없을까... 해서 기웃기웃 거리다가 포기하고 그냥 for문을 이용해서 풀었는데 역시 능력자는 존재했습니다...
  • 인상깊은 점은 removeFirst()를 할경우 remove되는 요소가 출력되는 것을 알고있었는데 이런건 도대체 언제쓸까... 하고 생각했었는데 이렇게 보게 되니 깨달음을 얻어 가네요 ㅎㅎ