본문 바로가기
Language/Java

[Programmers | Java | 연습문제 풀이] 행렬의 덧셈 - Solution with Loop 또는 IntStream

by ㅇ달빛천사ㅇ 2024. 7. 2.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기  |  Algorithm CODEKATA

🔢 행렬의 덧셈


🏷 관련 주제 : Array Loop 이차원 배열




✔️ Solution with Loop

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        for (int r = 0; r < arr1.length; r++) {
            for (int c = 0; c < arr1[0].length; c++) {
                arr1[r][c] += arr2[r][c];
            }
        }
        
        return arr1;
    }
}
채점 결과

✔️ Solution with IntStream

import java.util.stream.IntStream;

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = IntStream.range(0, arr1.length).mapToObj(i -> IntStream.range(0, arr1[0].length).map(j -> arr1[i][j] + arr2[i][j]).toArray()).toArray(int[][]::new);
        
        return answer;
    }
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제 : 행과 열의 크기가 같은 두 행렬  arr1arr2를 입력받아, 같은 행, 같은 열의 값을 서로 더한 결과 를 반환하는 함수, solution을 완성해주세요.


첫번째 풀이는
이중 for문을 통해
arr1의 각 원소에 같은 인덱스의 arr2의 원소의 값을 더한 후,
arr1을 반환하여 문제를 풀었다.

두번째 풀이는
IntStream을 이용하여 문제를 풀어보았다.
mapmapToObj 중 어느 것을 사용해야하는지,
이차원 배열이 그냥 toArray()로 만들어지지 않아서 조금 헤매었지만
구글링으로 해결하였다.
int[] 배열 안의 int[] 배열(행렬의 행, 일차원 배열)은 그냥 map()toArray()로 만들면 되고
행들을 모은 이차원 배열mapToObj()toArray(int[][]::new)를 이용해야했다.


💬 무엇을 새롭게 알았는지

IntStream으로 이차원 배열을 만드는 법을 알게되었다.


📚 References(참고 자료)







728x90