행렬의 덧셈
문제설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예
arr1 | arr2 | return |
[[1, 2], [2, 3] | [[3, 4], [5, 6]] | [[4, 6], [7, 9]] |
[[1], [2]] | [[3], [4]] | [[4], [6]] |
기본코드
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = {};
return answer;
}
}
문제풀이
이 문제 또한 한 번에 풀이하지 못한 문제이다.
이중배열을 선언하는 명확한 방법을 알지 못했고, 배열의 값을 더하는 방법 또한 알지 못했다.
때문에 몇 번의 오류내기를 반복하였고 이로인하여 배운 부분도 많다.
처음 이중배열을 선언할 때, 배열 길이를 설정하지 않았었다.
arr1과 arr2의 길이가 임의로 설정될 것을 고려하여 낸 나름의 결론이었지만 이는 코드 오류가 발생되게 만들었다.
int[][] answer = new int[][];
//이렇게만 선언하고 문제 풀이를 하였더니 아래와 같은 오류코드가 출력되었다.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at Solution.solution(Unknown Source)
at SolutionTest.lambda$main$0(Unknown Source)
at SolutionTest$SolutionRunner.run(Unknown Source)
at SolutionTest.main(Unknown Source)
//구글링 해보니 배열을 제대로 선언하지 못해 발생한 에러였다.
그 다음으로 낸 오류는 이중배열 구조를 명확하게 이해하지 못하여 발생하였다.
answer 배열의 길이를 arr1과 같게 설정하기 위하여 arr1.length를 사용하였으나 행렬에 대한 이해가 부족하여 오류가 났다.
//아래와 같이 배열 answer를 선언하였더니 일전에 작성하였던 코드와 비슷한 오류가 출력되었다.
int[][] answer = new int[arr.length][arr.length];
내가 저지른 실수는 행과 열의 길이가 다를 경우를 산정하지 않아서 발생한 것 같았다.
처음 선언한 [arr1.length]는 배열 answer의 행의 길이를 arr1과 동일하게 맞춰주는데에는 성공하였지만,
뒤에 열의 길이에서는 arr1의 열의 길이가 아닌 또 다시 행의 길이와 맞춰주는 문제를 범한 것이다.
이를 해결하기 위해 구글링을 통하여 아래와 같이 코드를 작성하였고, 이를 바탕으로 문제 풀이에 성공하였다.
Solution.java
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;
}
}
어렵지 않은 문제였지만 여러 실수를 범했고 그 덕에 많이 배울 수 있는 유익한 문제였다.
'🤖Algorithm' 카테고리의 다른 글
[프로그래머스] 부족한 금액 계산하기 Java (0) | 2022.07.18 |
---|---|
[프로그래머스] x만큼 간격이 있는 n개의 숫자 Java (0) | 2022.07.18 |
[프로그래머스] 핸드폰 번호 가리기 Java (0) | 2022.07.18 |
[프로그래머스] 없는 숫자 더하기 Java (0) | 2022.07.16 |
[프로그래머스] 평균 구하기 Java (0) | 2022.07.16 |