<월간 코드 챌린지 시즌1 문제>
-더보기에 문제 있어요-
더보기
<문제 설명>
길이가 같은 두 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 이하입니다.
입출력 예
a
|
b
|
result
|
[1,2,3,4]
|
[-3,-1,0,2]
|
3
|
[-1,0,1]
|
[1,0,-1]
|
-2
|
<문제 풀이>
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> a, vector<int> b) {
int answer = 0;
for(int i=0;i<a.size();i++){
answer += a[i] * b[i];
}
return answer;
}
<문제 후기>
다른 사람들의 코드를 보면서 C++에는 내적을 구해주는 내장함수가 있다는 걸 알게됐다.
T inner_product(InIt1 first1, InIt1 last1, InIt2 first2, T val [, BinOp op1, BinOp op2]);
위와 같이 inner_product라는 함수이다. <numeric>이라는 헤더파일에 내장되어 있는 함수다.
나의 코드에서 이 함수를 사용하고자 한다면,
return inner_product(a.begin(),a.end(),b.begin(),0);
이렇게 사용하면 바로 원하는 값을 return 해준다. 하지만 inner_product 함수를 사용할 때 주의할 점은, 첫번째 시퀀스의 범위보다 두번째 시퀀스의 범위는 항상 같거나 커야한다. 즉, 두번째 시퀀스의 범위가 더 작다면 이 함수는 실행될 수 없다.
'개발공부 > Programmers' 카테고리의 다른 글
[프로그래머스/C++]Level 1_크레인 인형뽑기 게임 (0) | 2022.01.28 |
---|---|
[프로그래머스/C++]Level 1_숫자 문자열과 영단어 (0) | 2022.01.28 |
[프로그래머스/C++] Level 1_키패드 누르기 (0) | 2022.01.28 |
[프로그래머스/C++] Level 1_없는 숫자 더하기 (0) | 2022.01.28 |
[프로그래머스/C++] Level 1_모의고사 (0) | 2022.01.28 |