Nellie's Blog

[프로그래머스][코딩테스트 연습] 행렬의 덧셈 본문

Back-end/Algorithm

[프로그래머스][코딩테스트 연습] 행렬의 덧셈

Nellie Kim 2022. 11. 19. 11:20
728x90

문제 설명

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

제한 조건
  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예arr1arr2return
[[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;
    }
}

 

 

내 틀린 풀이

class Solution {
    public static 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;
    }
    
    public static void main(String[] args) {
    	
    	int[][] a = {{1,2}, {2,3}};
    	int[][] b = {{3,4}, {5,6}};
    	
		System.out.println(Arrays.deepToString(solution(a,b)));
	}
}

실수 : answer의 크기를 미리 지정해줘야 하는데 또!!!! 지정안해줬다.;;;;;

 

맞는 풀이

class Solution {
    public static 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;
    }
    
    public static void main(String[] args) {
    	
    	int[][] a = {{1,2}, {2,3}};
    	int[][] b = {{3,4}, {5,6}};
    	int[][] c = {{1},{2}};
    	int[][] d = {{3},{4}};
    	
		System.out.println(Arrays.deepToString(solution(a,b)));
		System.out.println(Arrays.deepToString(solution(c,d)));
	}
}

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

이렇게 지정하는 것이 포인트 인 것 같다!!!