행렬의 덧셈

2023. 12. 1. 11:56카테고리 없음

https://school.programmers.co.kr/learn/courses/30/lessons/12950

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 


//import java.util.Arrays;

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;
		// sout println(Arrays.deepToStirng(answer));
    }
}

 

 

//import java.util.Arrays;

 

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
    }
}

반환값은 정수 타입의 2차원 배열이고, 파라미터는 정수 타입 2차원 배열 두 개를 받는다.

받는 건 행과 열이기 때문에 요소 안의 요소의 길이는 2로 정해져 있다.

 

        int[][] answer = new int[arr1.length][arr1[0].length];

먼저 반환될 배열을 선언하고 배열의 길이를 할당한다.

[arr1.length] = 가장 바깥 요소의 길이다.

[arr1[0].length] = 가장 안쪽 요소 길이다.

 

answer 와 arr1, arr2 의 길이는 같아야 한다. 그래서 [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];
			}
		}

인덱스 0번째 요소 안으로 들어가서 작은 요소값을 다 돌고 그 다음에 인덱스 1번째 요소의 안으로 들어가서 작은 요소값을 다 도는 식으로 for 문을 설계했다. 

 

answer, arr1, arr2 의 인덱스 번호와 배열의 길이는 똑같기 때문에 이 세 배열의 첫 번째 자리에 i를 넣고 두 번째 자리에 j 를 넣었다.

 

        return answer;
		// sout println(Arrays.deepToStirng(answer));

arr1 과 arr2 가 더해진 answer 을 반환한다.

 

주석 처리된 것은 인텔리제이에서 println 으로 한 번 출력 테스트를 한 것이다.

2차원 배열이라서 Arrays.ToString 을 사용하면 주소가 출력된다.

Arrays.deepToString을 사용해야 내가 원하는 answer 요소 하나하나를 볼 수 있었다.