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

말하는 감자·2022년 5월 9일
0

Programmers Level 1

목록 보기
3/66
post-thumbnail

프로그래머스 Level 1

🔒 행렬의 덧셈

📚 문제 설명

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


✅ 제한 조건

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

📖 입출력 예

arr1arr2return
[[1,2],[2,3]][[3,4],[5,6]][[4,6],[7,9]]
[[1],[2]][[3],[4]][[4],[6]]

🗝️ 작성 코드

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;
    }
}

2차원 배열을 이용하여 구하면 된다.
arr1과 arr2의 배열 길이가 동일하다는 전제하에 풀었다.

먼저 answer를 arr1의 길이와 동일하게 선언하기 위해 row로 arr1.length(arr1의 row 갯수), cloumn으로 arr1[0].length(arr1의 0번째 row가 가지고 있는 column 갯수)을 지정하였다.

그 다음은 직사각형 별찍기와 비슷하다.
이중 for문을 이용하여 column만큼 반복하여 각 column을 더해주고 모든 column을 계산했다면 다음 row로 이동하여 다시 각 column을 더해준다.


😁 느낀 점

사실 이 문제는 전에 풀어 둔 것이다.
입사 동기가 프로그래머스 1단계를 풀고 있는데 잘 안풀린다고 한 문제였다.

처음엔 그랬구나~ 하고 흐린 눈하고 지나쳤는데 다음에도 해결 못했다고 하길래 그 때 문제와 동기의 코드를 제대로 읽고 answer의 길이와 i와 j의 범위를 배열 arr1의 길이로 변경했다.

동기가 문제를 너무 어렵게 생각한 상태로 너무 오래 봐서 코드를 객관적으로 읽지 못한 것 같다. (감자가 자주 그런다😏)

근데 어떻게 풀었냐고 설명해달라니깐 설명 못하는 감자...😓
나는 말도 못하는 감자였다... 쳇!

profile
나는 말하는 감자다

0개의 댓글