-
아래 문제는 프로그래머스에서 제공하는 월간 코드 챌린지 시즌1 > 내적의 문제입니다🧑🏻💻
문제 제시
- 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
제한사항- a, b의 길이는 1 이상 1,000 이하입니다.
- a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
입출력 예[1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1] -2 - a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다.
- a와 b의 내적은 (-1)*1 + 0*0 + 1*(-1) = -2 입니다.
- 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
문제 해결
import Foundation func solution(_ a:[Int], _ b:[Int]) -> Int { let sequenceZip = zip(a, b) var result: Int = 0 for (i, j) in sequenceZip { result += (i * j) } return result }
사용된 개념
- zip
- 반복문
문제 뒷담화
이번 문제는 새로 사용해본 개념이 있다.
바로 zip이다. 컬렉션중 배열과 딕셔너리 외에도 zip을 사용하면 유용할 때가 있다.
어제의 음양 더하기 문제도 그러하고 같은 배열이 주어지고 비교를 하거나 어떤 액션을 취해주는일이 있다면,
같은 배열의 시퀀스를 같이 묶어 튜플처럼 표현하기에 사용이 적합한 zip 타입이다.
해당 zip타입으로 두 배열을 묶어준 뒤 반복문을 돌며 곱하여 결과값을 나타내주면 된다.
[참고자료]
https://programmers.co.kr/learn/courses/30/lessons/70128
- 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.