프로그래머스 공부/Python

[Level 1 / Python] 내적(월간 코드 챌린지 시즌1)

#자유의날개 2020. 11. 7. 09:34
반응형

문제 설명

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

출처 : programmers.co.kr/learn/courses/30/lessons/70128

풀이 방법

배열 a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 라고 하였으니 배열 a와 b의 인덱스 값을 이용하면 풀 수 있다.

또는 파이썬의 zip(*iterables)을 이용하여 풀 수 있다.  zip()은 동일한 개수로 이루어진 자료형에 대해 같은 인덱스끼리 묶어 주는 역할을 하는 함수이다.(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
list(zip([12], [34]))
# 결과 : [(1, 3), (2, 4)]
 
list(zip([12], [34], [56]))
# 결과 : [(1, 3, 5), (2, 4, 6)
 
list(zip([123], [456]))
# 결과 : [(1, 4), (2, 5), (3, 6)]
 
list(zip("ab""cd"))
# 결과 : [('a', 'c'), ('b', 'd')]
 
list(zip("ab", [12]))
# 결과 : [('a', 1), ('b', 2)]
cs

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 배열 a와 b의 인덱스를 이용한 풀이 방법
def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer += a[i]*b[i]
    return answer
 
 
# zip을 이용한 풀이 방법
def solution(a, b):
    answer = 0
    for i, j in zip(a, b):
        answer += i*j
    return answer
cs

참고 자료

(1) 점프 투 파이썬 : wikidocs.net/32#zip

반응형