Jaeyoung Kim
나의 개발 공부 일지
Jaeyoung Kim
전체 방문자
오늘
어제
  • 분류 전체보기 (77)
    • WIL👨‍🏫 (16)
    • 🤖Algorithm (29)
    • 🖥CS (20)
      • 기술면접대비🔎 (10)
    • ✍️개발로그 (10)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기
  • 설정

공지사항

인기 글

태그

  • 개발로그
  • til
  • 데이터자료구조
  • HTTP
  • rest
  • 백준2920
  • API
  • sql
  • transaction
  • 자바
  • querydsl
  • SQLD
  • WIL
  • 백준
  • 트랜잭션
  • Java
  • 회고록
  • 프로그래머스
  • N-gram parser
  • 항해99

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Jaeyoung Kim

나의 개발 공부 일지

[프로그래머스] 행렬의 덧셈 Java
🤖Algorithm

[프로그래머스] 행렬의 덧셈 Java

2022. 7. 18. 10:54
728x90

행렬의 덧셈


문제설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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;
    }
}

어렵지 않은 문제였지만 여러 실수를 범했고 그 덕에 많이 배울 수 있는 유익한 문제였다.

728x90

'🤖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
    '🤖Algorithm' 카테고리의 다른 글
    • [프로그래머스] 부족한 금액 계산하기 Java
    • [프로그래머스] x만큼 간격이 있는 n개의 숫자 Java
    • [프로그래머스] 핸드폰 번호 가리기 Java
    • [프로그래머스] 없는 숫자 더하기 Java
    Jaeyoung Kim
    Jaeyoung Kim
    보다 안정적인 코드 구현을 꿈꾸는 백엔드 개발자 지망생

    티스토리툴바