프로그래머스 Lv1. 행렬의 덧셈

용상윤·2021년 3월 9일
0
post-custom-banner

문제

https://programmers.co.kr/learn/courses/30/lessons/12950


접근

js

  • map()을 사용하면 될 것 같았지만 숙련되지 않아 for문만을 사용했다.
    어떻게 map() 을 사용할 수 있을까?

  • map()

python

  • numpy를 사용하거나 map() 사용이 숙련되지 않아.. 두 개의 배열을 인자로 받는 함수를 만들었다.

  • numpy 행렬덧셈


코드

📌 js

제출한 코드

for문을 활용

function solution(arr1, arr2) {
    let answer = [];
    let temp = [];
    for(var i=0; i<arr1.length; i++){
        for(var j=0; j<arr1[0].length; j++){
            temp.push( arr1[i][j]+arr2[i][j] )
        }
        answer.push(temp);
        temp = [];
    }
    return answer;
}

map()

function solution(arr1, arr2) {
    return arr1.map( (a,i) => a.map( (b,j) => b+arr2[i][j] ) ) 
}

📌 python

제출한 코드

def solution(arr1, arr2):
    answer = []
    
    def add_arr(a, b) :
        arr = []
        for i in range(len(a)) :
            arr.append(a[i]+b[i])
        return arr
    
    for i in range(len(arr1)) :
        answer.append(add_arr(arr1[i],arr2[i]))
        
    return answer

numpy

import numpy as np
def solution(arr1, arr2):
    a = np.array(arr1)
    b = np.array(arr2)
    answer = a+b
    return answer.tolist()
    
tolist() 를 생략할 경우 출력은 행렬의 형태이기 때문에 다음과 같은 에러발생
# TypeError: Object of type ndarray is not JSON serializable

✍ 메모

numpy

numpy 라이브러리를 이용한 python 행렬계산

import numpy as np
arr1, arr2 = [[1, 2], [2, 3]], [[3, 4], [5, 6]]
a = np.array(arr1)
b = np.array(arr2)
answer = a+b

print(answer)
#[[4 6]
# [7 9]]

return answer
# TypeError: Object of type ndarray is not JSON serializable
# 출력이 행렬형태로 나타내기 때문에 return 할때는 tolist()를 이용한다.

print( answer.tolist() )
# [[4, 6], [7, 9]]

profile
달리는 중!
post-custom-banner

0개의 댓글