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]]
- 문제 풀이 과정
- 정답이 될 배열의 길이를 정해주기
- 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));
}
}
이번 문제는 단순히 배열의 값을 더해서 저장해주면 되는 문제였다.
하지만 이차원 배열의 개념을 정확히 알고 있지 않으면 조금 헷갈릴 수 있는 문제이다.
오랜만에 이차원 배열의 개념을 다시 확인하는 시간이 되었다.