행렬의 덧셈_Java

컴투루·2022년 4월 13일
2

프로그래머스 Lv.1

목록 보기
3/38

연습문제

🔥 행렬의 덧셈 🔥


👀 문제

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


✔️ 조건

행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않음


👩‍💻 입력

1) arr1 : [[1,2],[2,3]] , arr2 : [[3,4],[5,6]]
2) arr1 : [[1],[2]] , arr2 : [[3],[4]]


🧙 출력

1) [[4,6],[7,9]]
2) [[4],[6]]


🙋‍♀️ 풀이

처음 나의 풀이는 아래의 코드...

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

이 풀이로는 테스트 2를 통과하지 못했다.
당연한 결과라고 생각했다. 테스트 2를 통과하기에는 answer의 크기를
잘못 정한것 같았다.

문제점
1) answer를 선언할 때 배열의 크기
	위의 코드처럼 설정하면 행렬의 길이 즉 열의 길이만 알 수 있기 때문에 
    원하는 결과 값과 동일한 행렬을 만들 수 없다.

❗️ 문제를 해결하기 전에 행렬의 길이를 구하는 length에 대해 알아보자.

행렬 arr3이 [[1,2],[3,4],[5,6]]이라고 가정해보자
arr3.length의 값은 3
arr3[0].length의 값은 2

그럼 다시 문제로 돌아와서 보자면 arr1과 arr2의 크기와 0번째의 크기는 모두 동일할 것이기 때문에 나는 arr1으로 행렬의 크기를 지정하기로 했다.

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;
    }
}
  1. 행렬 answer의 길이를 arr1.length와 arr1[0].length로 설정
  2. 중첩 반복문을 사용해서 answer에 값 대입
    ex) 2번째 입력값을 예시로 풀어보자면
    arr1.length의 값은 2, arr1[0].length의 값은 1이다.
    따라서 반복문이 돌이가면 answer[0][0]과 answer[1][0]에 값이 대입된다.

👏 마무리

이래도 되나 싶을 정도로 기초가 없다는걸 느끼는 문제였다.
월요일부터 문제를 풀기 시작했다. 절대로 검색해보지 않겠다고 낑낑 거리면서 푼게 위의 첫번째 풀이였다. 하지만 행렬도 length도 제대로 이해하지 못했던 나는 금요일까지도 계속 고민을 했다.

고민하다가 입사동기에게 물어보니 스르륵 문제가 해결되었다.
부족함을 많이 느끼게 되었다.

앞으로도 더 많은 노력이 필요할 것 같다.
Level5를 풀 수 있는 그날까지....

profile
맘 먹으면 못할 게 없지

1개의 댓글

comment-user-thumbnail
2022년 4월 22일

그래~ 더 노력하도록 하여라~~ ^w^

답글 달기