티스토리 뷰

반응형

Using Language : Java
Using Tool : IntelliJ


  • 프로그래머스 문제 소개

<행렬의 덧셈>

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

arr1              arr2            return
[[1,2],[2,3]]      [[3,4],[5,6]]   [[4,6],[7,9]]
[[1],[2]]          [[3],[4]]       [[4],[6]]
  • 문제 풀이 과정
  1. 정답이 될 배열의 길이를 정해주기
  2. for문을 사용해서 각 배열의 값을 더해주기

문제 풀이 과정은 다음과 같이 간단하다!
하지만 정답 배열의 길이를 정해주는 방법을 한번 더 생각하고 문제를 풀어야한다.
( 배열이 2차원 배열인 것에 주목 )


아래의 코드에서 배열의 길이를 len1과 len2로 각각 지정해주었다.
각각 지정해주어서 무엇을 세고 있는지는 다음과 같다.


ex ) int[][] arr1 = [[1],[2]] 일 때, len1은 arr1.length로 [1]과 [2]를 각각 세어주어서 2라는 값을 가지고,
len2는 arr1[0].length로 0번째 배열 안의 개수를 세므로 1이라는 값을 가지게 된다!


행과 열이 같은 두 행을 더해주는 문제이므로 0번째 배열의 길이만 세어주어도,
문제를 푸는데 무리없이 진행된다.


<Solution6.java>, <Solution6Test.java>

public class Solution6 {

    public int[][] solution(int[][] arr1, int[][] arr2) {
        int len1=arr1.length;
        int len2=arr1[0].length;
        int[][] answer = new int[len1][len2];

        for(int i=0;i<len1;i++){
            for(int j=0;j<len2;j++){
                answer[i][j]=arr1[i][j]+arr2[i][j];
            }
        }
        return answer;
    }
}

public class Solution6Test {
    @Test
    public void 결과() {
        Solution6 solution = new Solution6();
        int arr1[][]={{1,2},{2,3}};
        int arr2[][]={{3,4},{5,6}};
        int arr3[][]={{4,6},{7,9}};
        assertArrayEquals(arr3,solution.solution(arr1,arr2));

    }
}

이번 문제는 단순히 배열의 값을 더해서 저장해주면 되는 문제였다.

하지만 이차원 배열의 개념을 정확히 알고 있지 않으면 조금 헷갈릴 수 있는 문제이다.

오랜만에 이차원 배열의 개념을 다시 확인하는 시간이 되었다.

github에서 문제 확인하기


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함