문제
두 행렬이 주어졌을 때 각각의 같은 위치의 원소를 더한 결과를 출력하는 프로그램을 작성하세요.
첫 번째 행렬 A는 n × m 크기의 행렬이며, 두 번째 행렬 B도 n × m 크기의 행렬입니다. 각 행렬은 두 개의 줄로 이루어져 있으며, 첫 번째 줄에는 각각 행렬의 행과 열의 개수를 나타내는 두 정수 n과 m이 공백으로 구분되어 주어집니다. 그 다음 줄부터는 각 행렬의 원소 값이 공백으로 구분되어 차례대로 주어집니다.
각 원소는 정수 값이며, 두 행렬 A와 B의 같은 위치의 원소를 더하여 나온 값으로 이루어진 새로운 행렬을 출력하세요.
입력
첫 번째 줄에는 두 행렬의 행과 열의 개수를 나타내는 두 정수 n과 m이 주어집니다.
그 다음 줄부터는 두 행렬 A와 B의 원소 값이 각각 공백으로 구분되어 주어집니다.
예시
const test_case = `3 3
13 7 5
4 23 4
2 6 4
34 5 7
25 55 34
2 3 10`
// 출력
47 12 12
29 78 38
4 9 14
풀이
function addMatrices(input) {
const _array = input.split('\n').map((e) => e.split(' '));
const n = Number(_array[0][0]);
const m = Number(_array[0][1]);
const result = Array.from(new Array(n), () => new Array(m));
for (let i = 1; i <= n; i++) {
for (let j = 0; j < m; j++) {
result[i - 1][j] = Number(_array[i][j]) + Number(_array[i + n][j]);
}
}
result.forEach(e => {
console.log(e.join(' '))
})
}
이 코드는 주어진 문자열을 배열로 변환한 후, 첫 번째 행렬과 두 번째 행렬의 같은 위치에 있는 요소들을 더하여 새로운 행렬을 만드는 작업을 수행합니다.
우선, 입력 문자열을 줄바꿈을 기준으로 나누어서 이차원 배열로 변환합니다.
새로운 행렬은 첫번째 행에서 n과 m을 입력받아 nxm 행렬 초기화를 합니다.
그런 다음 첫 번째 행렬의 각 요소와 두 번째 행렬의 같은 위치의 요소를 더하여 새로운 행렬에 저장합니다.
마지막으로 새로운 행렬을 반복하여 각 행을 공백으로 구분하여 출력합니다.
'코딩문제' 카테고리의 다른 글
문자열 세로 추출 (0) | 2024.03.30 |
---|---|
2차원 배열의 최대 값 및 위치 찾기 (0) | 2024.03.30 |
연속된 문자 제외 중복된 문자 체크 (0) | 2024.03.30 |
대체된 문자열 길이 구하기 (0) | 2024.03.30 |
가장 많이 등장하는 알파벳 찾기 (0) | 2024.03.30 |