개발자/프로그래머스

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

푸루닉 2023. 4. 16. 23:11

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

 

프로그래머스

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

programmers.co.kr


import java.util.Arrays;

public class programmer_2 {
    public static void main(String[] args) {
        int[][] a = {{1,2},{2,3}};
        int[][] b = {{3,4},{5,6}};
        Solution2 sdf = new Solution2();
        System.out.println(Arrays.deepToString(sdf.solution(a, b)));
    }

    static class Solution2 {
        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;
        }
    }
}

일단 굉장히 정석으로 풀었다. 알아되야 할점은 1. 2차원 배열 사용하는 방법 2. arrays.deepToSTring이다.

 

1. 2차원 배열 사용하는 방법

  • 먼저, answer의 배열의 크기를 설정해주고 초기화 해줄 필요가 있다. 문제에서 보면 2행, 2열을 가진 2차원 배열이다.
  • 그렇다면, 어떻게 answer을 2행, 2열을 가진 2차원 배열로 만들 수 있을까?
  • 답은 두가지가 있다.
    • int[][] answer = new int[arr1.length][arr1[0].length];
      풀어서 쓰지만 행의 길이가 2이고 arr1의 0번째의 길이가 2인 즉, 2행 2열을 가진 2차원 배열로 선언해주는 방식이다. 굉장히 정석적인 방법이다.
    • answer = arr1;
      어차피 배열의 크기가 똑같기 때문에 answer을 0으로 선언 하는 방식이다. 이경우에는 코드가 살짝 달라진다.
        int[][] answer = {};
        answer = arr1;
        for(int i=0; i<arr1.length; i++){
            for(int j=0; j<arr1[0].length; j++){
                answer[i][j] += arr2[i][j];
  • 그 뒤 2중 for문을 통해 문제를 해결해주면 된다. 간단한 문제이지만 2차원 배열에 대한 지식이 없다면 풀 수 없는 문제이다.

2. arrays.deepToString

  • Arrays.deepToString() 메소드는 다차원 배열을 출력할 때 사용하는 메소드이다.
  • Arrays.toString()과 달리, 이차원 배열도 올바르게 출력할 수 있다. 따라서, 위 코드에서는 deepToString() 메소드를 이용하여 이차원 배열 arr을 출력한다.