프로그래머스 LV1 "행렬의 덧셈"
프로그래머스 LV1 행렬의 덧셈
기초부터 다시 공부를 하기위해 프로그래머스 라는 사이트에서 코딩테스트를 LV0 부터 가능한곳까지 못하는곳은 레퍼런스를 찾아가며 풀어보려고 합니다.
매일 1개의 풀이를 하고 그 풀이에대한 나의 생각 및 해석을 적어보려합니다.
오늘은 LV1 문제 ‘행렬의 덧셈’ 문제입니다.
위 이미지가 프로그래머스 코딩문제입니다.
문제는 매개변수로 행렬 arr1
과 arr2
를 입력받아, 행렬 덧셈을 실행해 결과값을 출력하는 문제입니다.
그럼 오늘의 문제를 한번 풀어보겠습니다.
기본 세팅 코드도 알아보겠습니다.
1
2
3
4
function solution(arr1, arr2) {
var answer = [[]];
return answer;
}
기본 세팅 코드는 매개변수 arr1
와 arr2
가 입력되고 함수 안에는 answer
이라는 변수가 선언되어 리턴하는 간단한 기본 세팅 코드입니다.
문제를 풀기 전에 행렬이 무엇인지 알아보고 또, 행렬의 덧셈은 어떻게 하는것인지 알아보고 문제를 해결해 보겠습니다.
행렬이란?
행렬(matrix)은 수학에서 사용되는 개념으로, 특히 프로그래밍에서는 다차원 배열로 표현됩니다. 행렬은 수를 사각형 모양의 배열로 나열한 것으로, 각각의 숫자는 행(row)과 열(column)의 위치에 따라 지정됩니다. JavaScript
에서도 행렬을 다차원 배열로 표현할 수 있습니다.
예를 들어, 다음과 같은 2x3 행렬은 JavaScript
의 다차원 배열로 표현할 수 있습니다:
1
2
3
4
const matrix = [
[1, 2, 3],
[4, 5, 6]
];
여기서 matrix
는 2개의 행과 3개의 열로 이루어진 행렬입니다.
이때, 행렬의 각 요소에 접근하려면 인덱스를 사용하여 접근할 수 있습니다. 예를 들어, (0, 1) 위치의 요소는 matrix[0][1]
로 접근할 수 있습니다. 이는 첫 번째 행의 두 번째 열을 나타냅니다.
우선 이렇게 간단하게 행렬이 무엇인지 알아보았습니다.
그럼 이어서 행렬 덧셈은 무엇이고 어떻게 하는지 알아보겠습니다.
행렬의 덧셈
행렬 덧셈은 두 개의 동일한 크기를 갖는 행렬을 더하는 연산입니다. 두 행렬의 크기가 같다는 것은 행과 열의 수가 동일하다는 것을 의미합니다.
먼저, 두 개의 행렬을 JavaScript
의 다차원 배열로 표현합니다. 그리고 같은 위치에 있는 요소들을 서로 더해서 새로운 행렬을 생성합니다.
예를 들어, 다음과 같은 두 행렬을 생각해봅시다:
1
2
3
4
5
6
7
8
9
const A = [
[1, 2],
[3, 4]
];
const B = [
[5, 6],
[7, 8]
];
이 경우, 행렬의 덧셈을 수행하면 다음과 같습니다:
1
2
3
4
A+B = [
[1+5, 2+6],
[3+7, 4+8]
];
따라서 결과는 다음과 같습니다:
1
2
3
4
A+B = [
[6, 8],
[10, 12]
];
이러한 방식으로 행렬의 덧셈은 각 행렬의 같은 위치에 있는 요소들끼리 더해서 새로운 행렬을 만듭니다.
만약 행렬의 크기가 다르다면?
행렬의 크기가 다른 경우에는 행렬의 덧셈을 수행할 수 없습니다. 행렬의 덧셈을 수행하기 위해서는 두 행렬의 크기가 동일해야 합니다.
행렬의 크기가 다른 경우에는 덧셈 연산이 불가능하므로, 해당 경우에는 오류가 발생하거나 연산이 실패합니다. 이는 행렬의 덧셈에 대한 기본적인 연산 규칙이기 때문입니다.
따라서 행렬의 크기가 다른 경우에는 먼저 행렬의 크기를 맞추는 작업이 필요합니다. 이를 위해 행렬의 크기를 동일하게 만들거나, 다른 방법을 사용하여 연산을 수행해야 합니다. 일반적으로 행렬 연산에서는 행렬의 크기가 같아야만 덧셈, 뺄셈 등의 연산이 가능합니다.
이렇게 행렬과 행렬의 덧셈 방법을 알아보았습니다.
그럼 오늘 문제의 풀이를 코드로 한번 작성해 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
function solution(arr1, arr2) {
var answer = [];
for (var i = 0; i < arr1.length; i++) {
var row = [];
for (var j = 0; j < arr1[i].length; j++) {
row.push(arr1[i][j] + arr2[i][j]);
}
answer.push(row);
}
return answer;
}
위 코드의 간단한 설명을 알려드리겠습니다.
결과를 저장할 빈 배열
answer
를 초기화합니다.첫 번째 반복문을 사용하여 행렬의 행을 순회합니다.
각 행에 대해
row
배열을 초기화합니다.두 번째 반복문을 사용하여 각 행의 열을 순회합니다.
두 행렬의 같은 위치에 있는 요소를 더하여
row
배열에 추가합니다.완성된
row
배열을answer
배열에 추가합니다.최종적으로 완성된
answer
배열을 반환합니다.
그럼 문제의 식이 완성되었으니 프로그래머스에 한번 확인해보겠습니다.
성공이네요!
오늘은 프로그래머스 LV1 ‘행렬의 덧셈’ 문제의 대해서 알아봤습니다.
제 방법이 꼭 정답은 아니니 그저 이런방법도 있구나하고 참고용으로만 봐주시면 감사하겠습니다.
감사합니다.