728x90
URL : https://school.programmers.co.kr/learn/courses/30/lessons/12950
JS
문제
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
계획
반복문으로 같은 인덱스를 가진 수를 합하고 새 배열에 arr.push([합])을 한다.
참고, 풀이
function solution(arr1, arr2) {
var answer = [[]];
arr1.forEach((v, i) => {
answer.push([v + arr2[i]]);
});
return answer;
}
배열안의 배열을 연산할 수 없엄/
typeof(v)가 숫자가 아니면 v.forEach 한번 더 돌리기
function solution(arr1, arr2) {
var answer = [[]];
arr1.forEach((v, i) => {
if (typeof +v === "number") {
answer.push(v + arr2[i]);
} else {
let arr = [];
v.forEach((v2, j) => {
arr.push(+v2 + +arr2[(i, j)]);
});
answer.push(arr);
}
});
return answer;
}
A = [
[1, 2],
[2, 3],
];
B = [
[3, 4],
[5, 6],
];
C = [[1], [2]];
D = [[3], [4]];
console.log(solution(A, B)); // [ [], '1,23,4', '2,35,6' ]
console.log(solution(C, D)); // [ [], '13', '24' ]
형태가 이상함
v.forEach((v2, j) => {
console.log(`v2 : ${typeof v2}, arr2 : ${typeof arr2[(i, j)]} `);
// v2 : number, arr2 : object
console.log(`arr2 = ${arr2[(i, j)]} `);// arr2 = 3
[ [], [ '13' ], [ '23' ] ]의 앞에 []는 'var answer = [[]];' 선언할 때 배열안에 있던 [] 때문임. 지우자
arr2에서 값 가져오는 게 틀렸음. arr2[i][j]로 해야함
답
function solution(arr1, arr2) {
var answer = [];
arr1.forEach((v, i) => {
if (typeof v === "number") {
answer.push(v + arr2[i]);
} else {
let arr = [];
v.forEach((v2, j) => {
arr.push(v2 + arr2[i][j]);
});
answer.push(arr);
}
});
return answer;
}
코드 간략화하기
다른사람 풀이
function sumMatrix(A,B){
return A.map((arr1, idx1) => arr1.map((val, idx2) => val+B[idx1][idx2]));
}
참고
객체를 원시형태로 형변환 : https://ko.javascript.info/object-toprimitive
'내일배움 과제 > 기타 과제' 카테고리의 다른 글
알고리즘 36 - 문자열 다루기 기본 (0) | 2024.12.17 |
---|---|
SQL, 알고리즘 문제 풀이 링크 (2) | 2024.12.16 |
알고리즘 35번 - 부족한 금액 계산하기 (0) | 2024.12.16 |
알고리즘 34 - 문자열 내림차순으로 배치하기 (0) | 2024.12.13 |
알고리즘 33번 - 약수의 개수와 덧셈 (0) | 2024.12.12 |