티스토리 뷰

728x90
반응형

 

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

 

코딩테스트 연습 - 행렬의 덧셈

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

programmers.co.kr

 


<나의 풀이>

def solution(arr1, arr2):
    answer = []
    index = 0
    
    for i in range(len(arr1)):
        answer.append([])
        for j in range(len(arr1[i])):
            answer[i].append(arr1[i][j] + arr2[i][j])
    return answer

 

단순하게 생각해서인지 직관적이게 푼 코드.

다른 사람들이 여러 함수를 곁들여  푼 것을 보고

함수 공부에 대한 필요성을 또 한번 깨달았다👍🏻 

 

 

<다른 사람의 풀이>

def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)]
    return answer

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


# <배운점> 
# => zip()에 대해 배울 수 있었음


'''
< 더 알아보기 >
-----------------------------------------------------------------------

# zip() : 동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수

A = [[1, 2], [2, 3]]
B = [[3, 4], [5, 6]]

print(zip(A, B)) # 출력 결과 : <zip object at 0x7fbcd592dc40>
print(list(zip(A, B))) # 출력 결과 :[([1, 2], [3, 4]), ([2, 3], [5, 6])]

for a, b in zip(A, B):
    print(a, b) # 출력 결과 : [1, 2] [3, 4] /n [2, 3] [5, 6]

-----------------------------------------------------------------------

# 컴프리헨션
answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)]

-----------------------------------------------------------------------

# 풀어쓰기
answer = []
for a, b in zip(A, B):
    l = []
    for c, d in zip(a, b):
        l.append(c+d)
    answer.append(l)

print(answer)

-----------------------------------------------------------------------
'''
728x90
반응형
댓글