프로그래머스 | 행렬의 덧셈 [파이썬 python]

2023. 3. 22. 19:09·Algorithm/프로그래머스
 

프로그래머스

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

programmers.co.kr

 

코드

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

두 행렬 arr1, arr2를 더하는 문제이다.

numpy를 사용하면 쉽게 할 수 있지만, 라이브러리를 사용하지 않고 어떻게 하면 구현할 수 있을지 고민하는데 시간이 소요되었다.

하지만 조금만 생각하면 쉽게 풀 수 있는 문제이다.

 

문제에서 주어진 예시를 가지고 살펴보면 다음과 같다.

행렬의 덧셈은 같은 크기의 행렬끼리만 더할 수 있다. 

그리고 덧셈의 결과는 같은 자리에 위치한 요소끼리 더한 값이다.

따라서, 우리는 두 행렬에서 같은 자리에 위치한 값을 찾아 더해주면 된다.

 

어떻게 자리를 찾는지가 포인트이다.

파이썬에서 2차원 배열은 [행][열]로 표현한다. 행이 먼저이고, 그다음이 열이기 때문에 행부터 접근하게 된다.

그러므로, 첫 번째 for문이 행을, 두 번째 for문이 열을 의미한다.

 

2차원 배열에서 len()을 이용하면 행의 개수를 리턴한다.

첫 번째 for문에서는 행을 탐색해야 하므로 len(arr1)만큼 반복하는 것이다.

 

그럼 열의 개수는 어떻게 접근해야 할까? 

0행의 길이를 구하면 된다. 그래서 len(arr[0])만큼 두 번째 for문을 반복한다.

우리는 이제 행렬의 모든 원소에 접근할 수 있다.

 

arr1, arr2 각각의 원소를 모두 더해 새로운 행렬로 만들 수도 있다.

하지만, arr1에 arr2의 원소를 더하는 방법으로 해결하였다.

그 이유는, 지나간 arr1의 요소를 다시 사용하는 일이 없기 때문에 새로운 행렬을 만들어 메모리를 사용하지 않으려고 했다.

 

다른 사람의 코드

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

for문을 두 번 사용하면 그만큼 연산 시간이 배로 늘어난다.

이 코드는 zip을 사용하여 for문을 한 번만 사용하였다는 점에서 충분히 배울만 하다고 생각했다.

2차원 배열에서 zip을 사용한 코드는 처음 보는 것 같아 zip에 대해서 조금 더 공부하고 정리해 보아야겠다.

 

저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 이상한 문자 만들기 [파이썬 python]
  • 프로그래머스 | 같은 숫자는 싫어 [파이썬 python]
  • 프로그래머스 | 약수의 갯수와 덧셈 [파이썬 python]
  • 프로그래머스 | 연속된 수의 합 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (44)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 행렬의 덧셈 [파이썬 python]
상단으로

티스토리툴바