[Baekjoon] 2738-➕행렬 덧셈

Chobby·2023년 9월 19일
1

Baekjoon

목록 보기
21/108

😀문제

N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.


😁입력

첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.


😂출력

첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.


🤣예제

예제 입력 1

3 3
1 1 1
2 2 2
0 1 0
3 3 3
4 4 4
5 5 100

예제 출력 1

4 4 4
6 6 6
5 6 100

😃출처

  • 문제의 오타를 찾은 사람: purpose

😄알고리즘 분류

  • 수학
  • 구현

😎나의 풀이

사람들은 A배열, B배열 각각 생성해서 더하던데, 물론 문제에서 요구하는 능력은 각 배열의 합일 지언정 내 기준에서 그건 메모리 낭비라고 생각한다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
const [rowLen, colLen] = input.shift().split(" ")

// N * M 배열 생성
const board = Array.from({length: Number(rowLen)}, () => Array(Number(colLen)).fill(0))

// 각 배열에 해당하는 요소 합
input.forEach((rows, rIdx) => {
    const row = rows.split(" ")
    row.forEach((col, cIdx) => {
        board[rIdx % rowLen][cIdx] += Number(col)
    })
})

let answer = "";

for (let i = 0; i < board.length; i++) {
    for (let j = 0; j < board[0].length; j++) {
        answer += board[i][j] + " ";
    }
    answer = answer.trim()
    answer += "\n";
}
console.log(answer.slice(0, answer.length - 1));
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글