2023.04.10

Jay Ji·2023년 4월 10일
0
post-thumbnail

Problem

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int aLeng = arr1.length;
        int bLeng = arr2.length;
        int[][] answer =new int[aLeng][bLeng];

        for(int i=0; i < aLeng; i++){
            for (int j=0; j < bLeng; j++){
               answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }

        return answer;
    }
}

해당 문제가 원하는 것은 2개의 행렬 arr1의 값과 arr2를 받은 후, 행렬 덧셈 결과를 반환하는 solution 구축

What I tried

가장 먼저 해당 코드를 어떻게 짜야하는지 생각을 해보았다.

  1. arr 1과 arr 2를 입력을 받아 행렬 덧셈
  2. for문으로 arr1을 돌릴때, arr1의 첫번째 index와 arr2의 첫번째 index 더해준다
    어떻게??? -> for문 안에 for문을 돌리는 방식으로 첫번째 for문에는 index[0]을, 두번째for문에는 index[1]을 돌리고, arr1[i][j]와 arr2[i][j]를 더해준다

결과적으로 위와 같이 코드를 작성하였다.

What was Wrong?

위 코드로 작성하였을 때, ArrayIndexOutOfBoundsException이라는 에러가 떴다. 아무리 코드를 체크해봐도 문제를 찾을 수가 없어 구글링을 해보니 아래와 같이 기존 코드를 변경해야했다.

int bLeng = arr2.length;  (x)
int bLeng = arr[0].length;  (o)

What I Learned

2D Array를 통하여 아래와 같이 몇가지 배운것이 있다.

  1. int bLeng = arr[0].length로 변경되여야만 하는 이유는, Arr2에서의 index에 담겨있는 번호를 확인해야하기 때문이다. 문제에서 원하는 값을 출력하기 위해서는 arr1.length를 사용 하는 건 맞지만, 해당 for문 안에서 두번째 for문을 돌릴 때는 arr2의 length가 아닌 index에 있는 번호를 bLeng에 담아야 한다.
  2. ----------- Arrays.deepToString() ------------- ==> 2차원 배열 출력할 때 사용

머리속으로 돌려가면서 구축하는데도 2D array는 결코 쉽지 않다.

profile
Think out of the Box

0개의 댓글