프로그래머스 Level 1
🔒 행렬의 덧셈
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
arr1 | arr2 | return |
---|---|---|
[[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 = 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;
}
}
2차원 배열을 이용하여 구하면 된다.
arr1과 arr2의 배열 길이가 동일하다는 전제하에 풀었다.
먼저 answer를 arr1의 길이와 동일하게 선언하기 위해 row로 arr1.length(arr1의 row 갯수), cloumn으로 arr1[0].length(arr1의 0번째 row가 가지고 있는 column 갯수)을 지정하였다.
그 다음은 직사각형 별찍기와 비슷하다.
이중 for문을 이용하여 column만큼 반복하여 각 column을 더해주고 모든 column을 계산했다면 다음 row로 이동하여 다시 각 column을 더해준다.
사실 이 문제는 전에 풀어 둔 것이다.
입사 동기가 프로그래머스 1단계를 풀고 있는데 잘 안풀린다고 한 문제였다.
처음엔 그랬구나~ 하고 흐린 눈하고 지나쳤는데 다음에도 해결 못했다고 하길래 그 때 문제와 동기의 코드를 제대로 읽고 answer의 길이와 i와 j의 범위를 배열 arr1의 길이로 변경했다.
동기가 문제를 너무 어렵게 생각한 상태로 너무 오래 봐서 코드를 객관적으로 읽지 못한 것 같다. (감자가 자주 그런다😏)
근데 어떻게 풀었냐고 설명해달라니깐 설명 못하는 감자...😓
나는 말도 못하는 감자였다... 쳇!