[연습문제] 행렬의 덧셈

2024. 12. 1. 18:00입문문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

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]]

행과 열의 길이가 동일한 두 배열이 주어졌을 때, 이 배열끼리의 합이 담긴 새로운 배열을 반환하는 문제입니다.

 

간단하게 각각의 배열에 어떻게 접근할 건지만 선택하면 되는 문제입니다.

저는 자바와 파이썬 모두 반복문을 사용해서 문제를 해결하겠습니다.

다만 파이썬은 리스트 컴프리헨션을 사용할 수 있으니, 이 방법으로 풀어보도록 하죠.

 

정답 코드를 작성해보겠습니다.

 

1. 자바

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        // 배열의 행, 열의 길이를 구합니다.
        int rows = arr1.length;
        int cols = arr1[0].length;
        // 새로운 배열을 선언합니다.
        int[][] answer = new int[rows][cols];
        // 반복문을 통해 두 배열의 합을 answer에 저장합니다.
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        // answer을 반환합니다.
        return answer;
    }
}

 

2. 파이썬

def solution(arr1, arr2):
    # arr1의 행 길이만큼 반복합니다.
    # arr1[0], 열 길이만큼 반복합니다.
    # 두 배열의 합을 새롭게 answer에 저장합니다.
    answer = [[arr1[i][j] + arr2[i][j] for j in range(len(arr1[0]))] for i in range(len(arr1))]
    return answer

 

두 풀이 방법 모두 동일한 방식을 사용합니다.

파이썬이 좀 더 짧기는 하지만, 알아보기 힘들기 때문에 저는 풀어쓰는 걸 추천드립니다.