코딩 테스트 연습/[프로그래머스] Python

[LV.2] 내적

duswjd_data 2025. 6. 17. 09:42

문제

https://school.programmers.co.kr/learn/courses/30/lessons/70128

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

  • 길이가 같은 두 1차원 정수 배열 a, b가 주어졌을 때, a와 b의 내적을 리턴
  • 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

def solution(a, b):
    result = 0
    for i in range(len(a)):
        result += a[i]*b[i]
    return result

풀이 설명

  • result = 0
    • 누적된 내적 결과를 저장할 변수 result를 0으로 초기화
  •  for i in range(len(a)):
    • a의 길이만큼 반복문을 실행 (두 배열 a, b는 같은 길이이므로 len(b)도 가능)
    • i는 인덱스를 나타내며, 0부터 len(a)-1까지 순차적으로 증가
  •         result += a[i]*b[i]
    • 각 인덱스 i에 대해, a[i]와 b[i]의 곱을 구한 뒤 result에 더함
  • return result
    • 계산이 모두 끝난 후 누적된 result 값을 반환

정답 코드 2

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

풀이 설명

  • zip(a, b)
    • a와 b의 각 원소를 순서대로 묶어서 튜플로 반환
      (ex) zip([1,2], [3,4]) → (1,3), (2,4)
  • sum(x*y for x, y in zip(a, b))
    • 각 위치의 곱을 구한 후, 곱들의 합계를 반환