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;
}
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
📌 오늘 만난 문제 : 행과 열의 크기가 같은 두 행렬 arr1
과 arr2
를 입력받아, 같은 행, 같은 열의 값을 서로 더한 결과 를 반환하는 함수, solution을 완성해주세요.
첫번째 풀이는
이중 for문을 통해
arr1
의 각 원소에 같은 인덱스의 arr2
의 원소의 값을 더한 후,
arr1
을 반환하여 문제를 풀었다.
두번째 풀이는
IntStream을 이용하여 문제를 풀어보았다.
map
과 mapToObj
중 어느 것을 사용해야하는지,
이차원 배열이 그냥 toArray()
로 만들어지지 않아서 조금 헤매었지만
구글링으로 해결하였다.
int[] 배열 안의 int[] 배열(행렬의 행, 일차원 배열)은 그냥 map()
과 toArray()
로 만들면 되고
행들을 모은 이차원 배열은 mapToObj()
와 toArray(int[][]::new)
를 이용해야했다.
💬 무엇을 새롭게 알았는지
IntStream으로 이차원 배열을 만드는 법을 알게되었다.
📚 References(참고 자료)
728x90