순간을 기록으로

[프로그래머스] 내적 본문

Problem Solving

[프로그래머스] 내적

luminous13 2021. 12. 2. 14:07

문제

https://programmers.co.kr/learn/courses/30/lessons/70128

 

코딩테스트 연습 - 내적

길이가 같은 두 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의

programmers.co.kr

 

 

주의할점

내적의 합이 int의 범위(-21억~ 21억)를 넘을 수도 있으므로 확인한다.

배열의 길이는 1,000이다 즉 10^3이다.

배열 원소의 최댓값은 1,000이다 즉 10^3이다.

 

내적의 값이 가장 큰 시나리오는 배열의 길이가 10^3이고 배열 a, b모든 원소의 값이 10^3인 경우다.

각 인덱스마다 두 원소값을 곱 결과는 10^6이고 10^3번 반복하니깐 가장 큰 내적의 값은 10^9이다. 0이 9번 붙어있는 값이다. 즉 1,000,000,000이고 10억이다. 따라서 int 자료형을 사용해도 된다.

 

해결

for(int i=0; i<a.length; i++) {
            
      answer += a[i] * b[i];
}

 

배열의 길이만큼 반복을 한다. 내적의 경우 두 배열의 길이가 같기 때문에 두 배열 중 아무거나 선택해서 배열의 길이를 구한다. 그리고 같은 인덱스를 가지는 원소의 값을 곱해서 계속 더해준다.

 

 

Comments