본문 바로가기
기타/알고리즘(백준)

[JS] 백준 2738번 행렬덧셈

by ㅇㅇ우너자나나 2022. 11. 28.

- 문제

https://www.acmicpc.net/problem/2738

 

2738번: 행렬 덧셈

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

www.acmicpc.net

 

- 문제접근

2차원 배열 문제를 처음 접했다.

예제 입력이 까다로워보였다. 예제 입력만 잘 받으면 문제없이 해결할 수 있을 것이라 생각했다.

 

- 내 풀이

const input = require("fs")
  .readFileSync("dev/stdin")
  .toString().trim()
  .split("\n");
const [hang, yul] = input
  .shift()
  .split(" ")
  .map((i) => +i);
const a = [];
const result = [];

input.forEach((line) => {
  const lineArr = line.split(" ").map((i) => +i);
  a.push(lineArr);
});

const b = a.splice(hang, hang);

for (let i = 0; i < hang; i++) {
  const smallA = a[i];
  const smallB = b[i];
  const arr = [];
  for (let j = 0; j < yul; j++) {
    const f = smallA[j] + smallB[j];
    arr.push(f);
  }
  result.push(arr);
}

result.map((i) => console.log(i.join(" ")));

 

- 비고

생각보다 오랜시간에 걸려 겨우 맞았다.

계속되는 런타임에러(TypeError) 때문에 trim() 을 넣어보기도 했고, vscode나 codesandbox에서도 코드를 다시 돌려보기도 했다.

그렇게 한참을 고민하다가 알게된건, 행과 열을 반대로 입력했었기 때문이었다는 것을 알게되었다.

수정하고나니 오류없이 정상 동작했다.