std::inner_product(내적 계산)

2024. 12. 22. 13:14·공부/Code Cata

#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;
}

처음에는 반복문을 통해 직접 배열의 시작과 끝을 순회하며 a[i] * b[i] 의 값을 answer 변수에 더 해가며 저장했는데,

내적 계산에 대해 알아보니 C++ 표준 라이브러리 <numeric> 헤더에 std::inner_product 함수의 존재를 알게되었다.

이는 두 컨테이너의 내적을 계산할 때 사용되고, 내적(inner product)은 두 벡터의 대응 요소를 곱하고 그 결과를 모두 합산한 값을 의미한다. 고로 위 문제의 해결에 대한 기능을 갖추고 있음을 알 수 있다.

 

 

#include <string>
#include <vector>
#include <numeric>

using namespace std;

int solution(vector<int> a, vector<int> b) {
   
    int answer = inner_product(a.begin(), a.end(), b.begin(), 0);
    
    return answer;
}

T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init);

first1과 last1은 a배열의 시작과 끝을 의미하고, first2는 b배열의 시작을 의미한다.

마지막으로 init은 결과 값의 초기 값을 의미한다.

 

  1. 시간 복잡도: O(n)
    • 두 범위를 한 번 순회하면서 내적을 계산하므로 선형 시간 복잡도를 가집니다.
  2. 가독성 향상:
    • 루프를 명시적으로 작성하지 않아도 되므로 코드가 간결해집니다.
  3. 범용성:
    • 커스텀 연산자를 통해 다양한 계산을 지원합니다.

T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2

*binary_op2 ; binary_op1 : 두 값을 결합할 커스텀 이진 연산. 기본적으로 덧셈이다.

*binary_op2 : 두 범위의 요소를 결합할 커스텀 이진 연산. 기본적으로 곱셈이다.

'공부 > Code Cata' 카테고리의 다른 글

Quick Sort  (0) 2024.12.23
std::sqrt  (0) 2024.12.22
약수의 개수가 홀수인가?  (0) 2024.12.22
std::string::substr  (0) 2024.12.18
std::min_element  (0) 2024.12.18
'공부/Code Cata' 카테고리의 다른 글
  • std::sqrt
  • 약수의 개수가 홀수인가?
  • std::string::substr
  • std::min_element
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    std::inner_product(내적 계산)
    상단으로

    티스토리툴바