문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]] |
for문 2개 돌려서 각각의 [i][j]끼리 더하면 되겠다고 생각했지만 역시나 쉽게 되지 않았다
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = {};
for(int i=0; i<arr1.length; i++) {
for(int j=0; j<arr2.length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
answer의 길이를 정해주는 것을 빼먹었었다.
→ Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1[0].length][arr1.length];
for(int i=0; i<arr1.length; i++) {
for(int j=0; j<arr1.length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
→ Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
다시 수정!!!
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[0].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
성공
2차원 배열의 열의 수와 행의 수를 계속 헷갈려했다
arr1[0].length → 열의 수
arr1.length → 행의 수
arr2의 행렬을
1
2
이렇게 두고 봤어야 했는데 바보같이
1 2
이렇게 두고 봤었다…. 그래서 한참 헤맴 ㅜㅜ
'프로그래머스 > 1단계' 카테고리의 다른 글
삼각형의 완성조건(2) (0) | 2024.06.08 |
---|---|
정수 내림차순으로 배치하기 (2) | 2024.05.22 |
하샤드 수 (1) | 2024.05.21 |
합성수 찾기 (0) | 2024.05.18 |
외계어 사전 (0) | 2024.05.18 |