규도자 개발 블로그

[프로그래머스/Level1/파이썬3(python3)] 내적 본문

알고리즘/풀이

[프로그래머스/Level1/파이썬3(python3)] 내적

규도자 (gyudoza) 2021. 3. 5. 23:07

[프로그래머스/Level1/파이썬3(python3)] 내적

문제

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

입출력 예

abresult
[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 입니다.

풀이

def solution(a, b):
    return sum(x * y for x, y in zip(a, b))

설명

내적은 수학용어이다. 공부를 해봤는데 두 벡터 사이에 존재하는 특정한 값이고, 구하는 공식은 위에서 볼 수 있다. 이 내적이 0이면 두 벡터가 직각을 이루는 것이므로 게임이나 그래픽스 프로그래밍을 할 때 빛의 반사값 등을 구할 때 주로 쓴다고 한다. 설명에서 볼 수 있다시피 구하는 공식은 굉장히 간단하다. 같은 길이의 두 배열의 원소들을 각 자리에 대칭되는 것과 곱해주고 결과값을 모두 더하면 된다. 파이썬의 꽃, 컴프리헨션과 함께 두 개의 배열을 묶어주는 내장함수인 zip을 이용하여 간단하게 해결할 수 있다.

Comments