오늘의 코딩 테스트

오늘의 코딩 테스트(내적)

oceanflow 2025. 2. 21. 09:56

길이가 같은 두 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 이하입니다.

 

class Solution {
    public int solution(int[] a, int[] b) {
        
        int answer = 0;
        
        for (int i = 0; i < a.length; i ++) {
            answer += a[i] * b[i];
        }
        
        return answer;
    }
}

 

이렇게 문제를 풀었다. for문에서 a와 b를 곱하여 answer에 더하는 것을 길이 만큼 해주었다.

다시 리마인드를 하면, 자바에서 길이를 구하는 대표적인 메서드에는 .length와 .length(), .size()가 있다.

 

. length는 배열의 길이를 확인할 때, . length()는 문자열의 길이를 확인할 때, .size()는 ArrayList의 길이를 확인할 때 사용한다.

 

import java.util.stream.IntStream;

class Solution {
    public int solution(int[] a, int[] b) {
        return IntStream.range(0, a.length).map(index -> a[index] * b[index]).sum();
    }
}

 

그 외에 이러한 풀이가 있었다.

이 풀이는 IntStream.range(0, a.length)는 0부터 배열 길이 -1까지의 정수 스트림을 생성

.map(index -> a[index] * b[index])는 각 인덱스에서 a[index]와 b[index]의 곱을 계산하고 람다식을 사용하여 변환 작업 수행

.sum(); 스트림의 모든 요소를 더하여 최종 내적 결과를 반환한다.