문제.
길이가 같은 두 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되는 요소가 출력되는 것을 알고있었는데 이런건 도대체 언제쓸까... 하고 생각했었는데 이렇게 보게 되니 깨달음을 얻어 가네요 ㅎㅎ
'IOS > Swift Algorithm Level 1' 카테고리의 다른 글
Swift. 직사각형 별찍기 (0) | 2020.11.08 |
---|---|
Swift. 예산 (0) | 2020.11.08 |
Swift. x만큼 간격이 있는 n개의 숫자 (0) | 2020.11.05 |
Swift. 행렬의 덧셈( feat. zip ) (0) | 2020.11.04 |
Swift. 핸드폰 번호 가리기 (0) | 2020.11.03 |