본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 내적(C#)

by jyppro 2023. 8. 4.

내적

오늘은 월간 코드 챌린지 시즌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에 등장한 "약수의 개수와 덧셈" 문제를 다뤄보도록 하겠습니다. 감사합니다.