본문 바로가기

알고리즘 문제풀이/문제풀이

[python] 프로그래머스 Level.1 행렬의 덧셈

https://programmers.co.kr/learn/courses/30/lessons/12950?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

입출력 예

arr1 arr2 return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

문제 풀이

2차원 리스트를 파이썬으로 다루려니 생소하였다.

(처음엔 비어있는 answer 2차원 배열을 어떻게 생성하고 확장하는지 찾아봤음)

다른 풀이도 꾸준히 찾아보며 공부하기!

 

새로 배운 내장함수: zip(*iterable)

solution.py

나의 풀이

def solution(arr1, arr2):
    for i in range(len(arr1)): # 행
        for j in range(len(arr1[0])): # 열
            arr1[i][j] += arr2[i][j]    
    return arr1

다른 풀이

def solution(arr1, arr2):
    answer = [[c + d for c, d in zip(a, b)] for a, b in zip(arr1,arr2)]
    return answer

출처: https://programmers.co.kr/learn/courses/30/lessons/12950/solution_groups?language=python3