본문 바로가기
공부/코딩테스트

프로그래머스/C# - 내적

by 잰쟁 2024. 6. 13.
728x90

 

문제 설명

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

 

입출력 예

 

입출력 예 #1

  • a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다.

입출력 예 #2

  • a와 b의 내적은 (-1)*1 + 0*0 + 1*(-1) = -2 입니다.

 

 

 

풀이

using System;

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

 

: 배열 a와 b의 값을 모두 돌면서 연산을 해야하기 때문에 for문을 돌리며 처리하기로 하였다.

a와 b의 길이가 같으므로 임의로 a의 배열 길이를 가져와 i의 범위를 한정해주었고,

a[i] 와 b[i]를 곱해준 값을 answer에 더해주는 방식으로 풀이하였다.

 


 

다른 사람 풀이)

using System;
using System.Linq;

public class Solution
    {
        public int solution(int[] a, int[] b)
        {
            return a.Zip(b, (t1, t2) => t1 * t2).Sum(); 
        }
    }

 

: Linq의 Zip 과 Sum메서드를 사용하여 풀이 하였다.

Zip을 이용하여 각 배열의 모든 요소를 병합한 후 Sum 메서드를 이용하여 병합한 값들을 모두 더해준다.

 

Zip은 처음 보는 메서드라 배워간다!!

 

Enumerable.Zip 
: 데이터 컬렉션(List, Array, Dictionay)의 각각의 요소를 병합할 때 사용됩니다.
  다른 형태의 컬렉션도 타입이 맞는다면 병합이 가능합니다.