[프로그래머스] 행렬의 덧셈

진예·2023년 12월 19일
0

Programmers

목록 보기
15/45
post-thumbnail

📌 문제

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

✔️ 제한 조건

행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

✏️ 입출력

💡 코드

✅ 덧셈 결과를 저장할 2차원 배열 answer[][]의 크기를 arr1의 크기와 동일하게 설정한다. 의 크기는 전체 배열의 개수 arr1.length, 의 크기는 한 배열 안의 요소의 개수 arr1[0].length이다.

이후 이중 for문을 돌려서 두 배열의 같은 위치에 존재한 요소를 더한 값answer[행][열]에 저장하여 리턴한다.

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        
        int[][] answer = new int[arr1.length][arr1[0].length];
        
        for(int i=0;i<arr1.length;i++) {
            for(int j=0;j<arr1[i].length;j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        
        return answer;
    }
}

다른 사람의 코드 : 어차피 answerarr1크기가 같으므로 굳이 length를 통해 번거롭게 크기를 구할 필요 없이 그냥 arr1 자체를 answer에 저장해준다. 이후 이중 for문에서는 answer에 이미 arr1의 요소가 저장되어 있으므로 arr2의 요소만 더해주면 된다.

실제로 내 풀이대로 length를 통해 크기를 선언하다가 행, 열을 착각해서 참조 범위 예외가 한 번 터졌었는데, 이렇게 푸니 헷갈릴 필요도 없이 굉장히 간단해졌다,,

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        
        int[][] answer = arr1;
        
        for(int i=0;i<arr1.length;i++) {
            for(int j=0;j<arr1[i].length;j++) {
                answer[i][j] += arr2[i][j];
            }
        }
        
        return answer;
    }
}

profile
백엔드 개발자👩🏻‍💻가 되고 싶다

0개의 댓글