
파이썬을 배운 뒤 zip함수를 쓸일이 별로 없었지만 코딩테스트를 준비하며 알고리즘 문제를 풀던중 zip함수를 써야할 상황이 생겼다.
바로 프로그래머스의 LV.2 행렬의 곱셈 문제이다.

행렬을 다루는건 numpy에서는 다양한 함수가 있어 쉬운 문제였지만 기본 python 내장 함수로 해결하려니 zip함수를 사용하게 되었다.
zip(*iterable)은 동일한 개수로 이루어진 자료형을 묶어주는 역활을 하는 함수이다.
만약 서로 다른 길이의 자료형이 들어오는 경우에는 길이가 짧은 쪽 까지만 묶어준다.
*iterable 은 반복 가능한 자료형 여러개를 입력할 수 있다는 의미이다.
💡코드 예시

mylist를 *로 unpacking 해주게 되면 [1, 2, 3], [4, 5, 6], [7, 8, 9] 3개의 iterable한 자료형이 된다.
zip은 이 자료형을 index끼리 묶어 반환하게 된다.
🔑위 문제의 정답코드
def dot(A, B):
return sum(a*b for a, b in zip(A, B))
def solution(A, B):
answer = []
for A_row in A:
answer_row = []
for B_col in zip(*B):
answer_row.append(dot(A_row, B_col))
answer.append(answer_row)
return answer