내적
오늘은 월간 코드 챌린지 시즌1 출제문제인 "내적"을 살펴보도록 하겠습니다.
문제 설명
길이가 같은 두 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 이하입니다.
입출력 예
a | b | result |
[1, 2, 3, 4] | [-3, -1, 0, 2] | 3 |
[-1, 0, 1] | [1, 0, -1] | -2 |
입출력 예 설명
입출력 예 #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 = 1234567890;
return answer;
}
}
나의 풀이
using System;
public class Solution {
public int solution(int[] a, int[] b) {
int answer = 0;
int result;
for(int i = 0; i < a.Length; i++)
{
result = a[i] * b[i];
answer += result;
}
return answer;
}
}
코드 분석
int형 배열 a, b가 주어지며 코드는 시작합니다. for문을 a의 길이만큼 돌리고 그 안에서 result에 a와 b의 인덱스에 위치한 수끼리 곱한 값을 넣어줍니다. 이어서 answer에 result를 더해줍니다. for문이 종료되면 answer 값을 리턴합니다.
풀이 설명
먼저 내적에 대해서 모르실 수도 있으니 내적이 무엇인지부터 알려드리자면, 위 문제 설명에 보시면 나와있긴 하지만 두 수의 배열이 있다면 배열의 같은 인덱스를 가지는 수끼리 곱한 수의 합입니다. 좀 더 어렵게 들어가면 게임 프로그래밍에서 자주 사용되는 벡터와 연관이 있지만 생략하도록 하겠습니다.
풀이를 보면 특별히 다룰만한 내용은 없습니다. answer에 넣어줄 result라는 int형 변수를 하나 만들어주고, 내적에 대한 계산인 각 배열의 인덱스 위치에 수를 서로 곱해주는 것을 result에 차례대로 넣어 최종적으로 모든 인덱스를 for문으로 순환 시킨 result값을 answer에 리턴하며 끝이 납니다.
<NEXT>
오늘은 월간 코드 챌린지 시즌1 출제문제 "내적"을 풀어보았습니다. 다음에는 월간 코드 챌린지 시즌2에 등장한 "약수의 개수와 덧셈" 문제를 다뤄보도록 하겠습니다. 감사합니다.
'프로그래머스 코딩테스트 문제 > Level 1' 카테고리의 다른 글
[프로그래머스] - 문자열 내림차순으로 배치하기(C#) (0) | 2023.08.06 |
---|---|
[프로그래머스] - 약수의 개수와 덧셈(C#) (0) | 2023.08.05 |
[프로그래머스] - 수박수박수박수박수박수?(C#) (0) | 2023.08.03 |
[프로그래머스] - 가운데 글자 가져오기(C#) (0) | 2023.08.02 |
[프로그래머스] - 제일 작은 수 제거하기(C#) (0) | 2023.08.01 |