알고리즘 : 프로그래머스 : JAVA : 행렬의 덧셈

2022. 1. 16. 03:47알고리즘/프로그래머스

반응형

<문제>


<코드 & 설명>

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)풀이


- 2차원 배열을 이해해야 풀 수 있는 문제이다.

- answer배열은 arr1배열과 arr2배열의 합계가 저장되는 배열이며 array배열의 행의 개수는 arr1배열의 행의 개수를 array배열의 열의 개수는 arr1배열의 열의 개수를 선언해 준다. - arr1과 arr2는 행과 열의 크기가 같다.

(2차원 배열에서 length는 1차원 배열과 살짝 다르다. 2차원 배열에서는 배열변수.length는 행의 개수를 나타낸다. 그리고 각 행마다 별도의 length필드가 있으며 배열변수[인덱스].length는 각 행이 가지고 있는 열의 개수를 나타낸다.)

-for문으로 arr1배열의 행의 길이만큼 한 번 돌리면서 안쪽의 for문으로 행의 열의 길이만큼 돌려 arr1배열과 arr2배열의 값들을 더해 answer배열에 값을 넣어준다.

(예를 들어, 5x5 배열이라면 바깥쪽 for문으로 행이 1행에서 2행으로 되는데 그 사이에 안의 for문으로 열은 1행1열~1행5열까지 돌고 난 후 바깥쪽 for문으로 2행이 된다.)

(2)풀이


1. arr1과 arr2의 배열의 길이는 같으므로 arr1와 같은 배열의 크기로 answer의 배열 길이를 할당한다.
2. 반복문을 이용해 arr1과 arr2의 배열의 값을 구한다.
3. answer안에 반복문을 이용해 구한 arr1과 arr2의 합을 넣는다.


<다른 방법>

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