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)의 각각의 요소를 병합할 때 사용됩니다.
다른 형태의 컬렉션도 타입이 맞는다면 병합이 가능합니다.
'공부 > 코딩테스트' 카테고리의 다른 글
프로그래머스/C# - 명예의 전당(1) (0) | 2024.06.17 |
---|---|
프로그래머스/C# - 약수의 개수와 덧셈 (1) | 2024.06.14 |
프로그래머스/C# - 수박수박수박수박수박수? (0) | 2024.06.13 |
프로그래머스/C# - 가운데 글자 가져오기 (0) | 2024.06.11 |
프로그래머스/C# - 제일 작은 수 제거하기 (1) | 2024.06.11 |