문제
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
✏️ 내 풀이
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = {};
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],[2,3]] 가 테스트 케이스에 있다고 치면 [1,2] 를 첫번째 인덱스로 먼저 반복문을 돌리고 그안에 1,2 이라는 데이터를 j로 반복해 arr1 과 arr2 의 같은 인덱스 위치에 있는 것을 더한다.
오류가 발생했다
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)
오류를 읽어보니 배열의 길이가 0 인데 인덱스 0 이외의것을 찾아서 예외가 발생했다고 한다.
코드를 살펴보니 answer이라는 배열은 크기를 지정해줘야 한다는 것을 알게 되었다.
int[][] answer = new int[arr1.length][arr1[0].length];
이렇게 설정하면 두개의 인덱스의 크기를 모두 구할 수 있다.
✏️ 좋은 코드
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;
}
}
✒️회고
- 리스트가 아닌 배열을 선언하고 사용할 때에는 길이가 고정적으로 설정을 해줘야 한다는 것을 기억하기.
- 단순히 내 생각에 맞춘 코드를 짜기보다 누구나 쉽게 알아볼 수 있는 코드를 작성하는 것이 중요할 것이다
'코딩테스트 > Java' 카테고리의 다른 글
[Java]가장 가까운 같은 글자 (0) | 2025.03.28 |
---|---|
[Java]숫자 문자열과 영단어 (0) | 2025.03.25 |
[Java]정수 내림차순으로 배치하기 (0) | 2025.03.04 |
[Java]정수 제곱근 판별(Math함수) (0) | 2025.03.04 |
[Java]자연수 뒤집어 배열로 만들기(valueOf()사용) (0) | 2025.03.04 |