[프로그래머스] 레벨1 행렬의 덧셈 , 2차원 배열 복습

1

🐶 코딩테스트

목록 보기
6/13
post-thumbnail

🔷 🖱️여기 클릭하면 문제로 이동해요!

이 글은 문제를 정리하고 저의 풀이를 보여드리는 거예요. 실제로 문제를 보고 풀어보세요. 클릭! 클릭! 해보세요! 🖱️

🔷 문제

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다.
2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

✅ 입출력 예시

🔷 2차원배열

2차원 배열은 2중 for문과 구조가 같다.

✅ 2차원 배열 생성 방법

int[][] array4 = new int[5][7];

✅ 2차원 배열에 값을 저장하는 방법

array4[3][6] = 10;

array4[1] = 10 ; ➡️ 🚫이렇게 사용하면 오류!!🚫
array4[1] 은 또 다른 1차원 배열을 가리킬 수 있는 참조형 변수이기 때문에 값을 담을수는 없다.

✅ 선언과 동시에 초기화하는 방법

int[][] array6 = {{1}, {2,3}, {4,5,6}};

✅ ❗🌟가변크기의 2차원 배열을 생성하는 방법

int[][] array5 = new int[3][];
➡️ array5는 3개짜리 배열을 참조한다.
➡️ 3개짜리 배열은 아직 참조하는 배열이 없다
array5[0] = new int[1];
➡️ 정수를 하나 담을 수 있는 배열을 생성
➡️ array5 의 0 번째 인덱스가 참조
array5[1] = new int[2];
➡️ 정수를 두 개 담을 수 있는 배열을 생성
➡️ array5 의 1 번째 인덱스가 참조
array5[2] = new int[3];
➡️ 정수를 세 개 담을 수 있는 배열을 생성
➡️ array5 의 2 번째 인덱스가 참조

🔷 내가 만든 로직

✅ solution()

  • 가변크기의 2차원 배열을 생성한다.
  • arr1과 arr2는 solution 메소드의 인자이고, answer은 solution 메소드의 return값이다.
  • arr1과 arr2와 answer, 이 세개의 이차원 배열은 같은 행열의 크기를 가졌으므로
  • answer의 행의 크기와 열의 크기를 정할 때 arr1을 이용한다.
  • answer의 행의 크기는 arr1의 열의 크기와 같고, answer의 각각의 행의 크기는 arr1의 각각의 행의 크기와 같은 점을 이용하여
  • 처음에는 answer을 가변크기의 2차원 배열로 선언하고
    ( new int[arr1.length][] )
  • for문을 이용하여 각 행의 크기를 정한다.
    ( new int[arr1.length][arr1[0~n].length] )

🔷 내가 만든 코드

public class Solution {
    public static int[][] solution(int[][] arr1, int[][] arr2) {
        int columnLength = arr1.length;
        int[][] answer = new int[columnLength][];

        for (int column = 0; column < columnLength; column++) {
            int rowLength = arr1[column].length;
            answer[column] = new int[rowLength];

            for(int row = 0; row < rowLength; row++) {
                answer[column][row] = arr1[column][row] + arr2[column][row];
            }
        }

        return answer;
    }
}

✅ 🚫주의

  • 두번째 for문 안에 answer[column] = new int[rowLength];을 선언하면 row가 바뀔 때 마다 행이 초기화 되기 때문에 꼭! 첫번째 for문 안에서 미리 선언하고 난 후에 두번째 for문에서 각 row에 값을 넣어줘야 한다.

🔷 나의 코드 결과

🔷 2차원 배열 내용 출처

프로그래머스사이트의 자바입문-2차원배열글 보러가기 클릭! 🖱️

🔷 그림출처

인사이트사이트의 애니팡사진 보러가기 클릭! 🖱️

profile
몇 번을 넘어져도 앞으로 계속 나아가자

0개의 댓글