EXCELSIOR

[Level1] 행렬의 덧셈 (sumMatrix) 본문

Python/알고리즘_문제

[Level1] 행렬의 덧셈 (sumMatrix)

Excelsior-JH 2016. 11. 7. 11:04

1. 문제

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 

2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.


예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 

같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.)



2. 풀이

1) 내가 작성한 코드

- 임시 리스트를 만들어 이중 for 문을 통해 문제를 해결하였다.

def sumMatrix(A,B):
    answer = []
 
    for i in range(len(A)):
        tmp=[]
        for j in range(len(A[i])):
            tmp.append(A[i][j]+B[i][j])
        
        answer.append(tmp)
     
    return answer
  
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]]))

2) 다른 풀이

① 이중 for 문을 한줄로 나타내기

 
def sumMatrix(A,B):
    answer = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]

    return answer

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(sumMatrix([[1,2], [3,4]], [[3,4],[5,6]]))


② numpy를 사용하여 해결하기

import numpy as np
def sumMatrix(A,B):
    A=np.array(A)
    B=np.array(B)
    answer=A+B
    return answer.tolist()

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]]))


Comments