문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건- 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
arr1 | arr2 | return |
[[1,2],[2,3]] | [[3,4],[5,6]] | [[4,6],[7,9]] |
[[1],[2]] | [[3],[4]] | [[4],[6]] |
https://school.programmers.co.kr/learn/courses/30/lessons/12950
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(arr1, arr2) {
let newArray = [];
for(let i = 0; i < arr1.length; i++){
let temp = [];
for(let j = 0; j < arr1[i].length; j++){
temp.push(arr1[i][j] + arr2[i][j]);
}
newArray.push(temp);
}
return newArray;
}
// 1. 이차원 배열은 차례대로 [행,열]이다.
// 2. arr1, arr2 배열 인덱스가 같은 것을 더하면 같은 행, 같은 열의 값을 서로 더한 결과가 나온다.
// 3. 먼저 덧셈이 되는 arr1[0][0] + arr2[0][0]를 임시 저장공간 temp에 할당해준다.
// 4. 리턴하는 newArry 배열로 push해서 행렬의 덧셈을 반환한다.
temp를 for 반복문 위에서 선언하니까 이중배열이 합쳐지고 중복된 결과가 나왔다.
arr1 행 반복문을 실행하고 temp를 선언하면 [배열 요소 합] 형태로 temp.push되었다.
테스트 1
입력값 〉 [[1, 2], [2, 3]], [[3, 4], [5, 6]]
기댓값 〉 [[4, 6], [7, 9]]
실행 결과 〉실행한 결괏값 [[4,6,7,9],[4,6,7,9]]이 기댓값 [[4,6],[7,9]]과 다릅니다.
다른 문제 풀이
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function sumMatrix(A,B){
return A.map((a,i) => a.map((b, j) => b + B[i][j]));
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]]))
map 함수로 푸는 방식은 훨씬 간결하다!
map을 두 번 쓸 수도 있군요...
'Daily coding' 카테고리의 다른 글
[프로그래머스] Lv.1 모의고사 (0) | 2022.08.15 |
---|---|
[프로그래머스] Lv.1 폰켓몬 (0) | 2022.08.09 |
[프로그래머스] Lv.1 약수의 개수와 덧셈 (0) | 2022.07.26 |
[프로그래머스] Lv.1 신고 결과 받기 (0) | 2022.07.25 |
[프로그래머스] Lv1. 문자열 다루기 기본 (0) | 2022.07.19 |