Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- IT 지식
- 제로베이스
- js
- 엘리스코딩
- 노마드 코더
- 구름edu
- javascript
- 비전공자를 위한
- SQL 개발자
- 개발자북클럽
- 모던 자바스크립트 deep dive
- Do it! 시리즈
- nomadcoders
- 공부를 가장한 일기일지도
- CodeStates
- 백준
- 티스토리챌린지
- K-Digital Credit
- 자바스크립트
- 이해할 수 있는
- 오블완
- 자격증
- 노마드코더
- SQLD
- 최원영 저자
- boj
- 알고리즘
- 톺아보기
- 노개북
Archives
- Today
- Total
개발자를 희망하는 초보의 자기개발 이야기
백준 2738번 행렬 덧셈 - Node.js 본문
반응형

문제 원문 링크
문제
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
수도코드
1. input의 첫 번째 입력값으로 행렬의 크기 N과 M을 확인한다.
2. N*M 크기만큼 배열을 생성한다.
3. input의 두 번째 입력부터 M개의 줄까지 행렬 A의 원소를 집계한다.
4. input의 M+1의 입력부터 마지막까지 행렬 B의 원소를 집계한다.
5. 행렬 A와 행렬 B의 동일한 인덱스 값을 더한 새로운 결과 행렬을 생성한다.
풀이1
const fs = require("fs");
const input = fs.readFileSync("dev/stdin").toString().trim().split("\n");
// 1. input의 첫 번째 입력값으로 행렬의 크기 N과 M을 확인한다.
const [N, M] = input[0].split(" ");
// 2. N*M 크기만큼 배열을 생성한다.
const result = Array.from({ length: N }, () =>
Array.from({ length: M }, () => 0)
);
for (let i = 1; i < input.length; i++) {
// 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다.
let arr = input[i].split(" ").map(Number);
// N개의 줄에 따라 합계를 계산할 인덱스를 분리
if (i <= N) {
for (let j = 0; j < M; j++) {
result[i - 1][j] = arr[j];
}
} else {
for (let j = 0; j < M; j++) {
result[i - N - 1][j] += arr[j];
}
}
}
for (let i = 0; i < result.length; i++) {
console.log(result[i].join(" "));
}
문제를 충분히 분석 후 수도코드를 만들고, 이를 코드로 구현하는 것이 기본이라고 한다.
Array.from을 통한 배열 생성을 실제 프로젝트시에는 사용하지 않아서 자꾸 깜빡하는데 반복 숙달시켜야겠다.
1초 시간제한을 이중 반복문이 통과할 수 있을까 했으나 다행히 통과했다.
문제 분석시 행렬A와 행렬B에 대해 시각화를 하니 좀 더 수도코드를 만들기 수월했다.
// 행렬 A:
[1 1 1]
[2 2 2]
[0 1 0]
// 행렬 B:
[3 3 3]
[4 4 4]
[5 5 100]
반응형
'자료구조&알고리즘 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
백준 11478번 서로 다른 부분 문자열의 개수 문제 - Node.js (0) | 2024.11.12 |
---|---|
백준 2941번 크로아티아 알파벳 문제 - Node.js (0) | 2024.11.11 |
백준 1157번 단어공부 문제 - Node.js (0) | 2024.11.10 |
백준 2444번 별 찍기 - 7 문제 - Node.js (0) | 2024.11.09 |
백준 25083번 새싹 문제 - Node.js (0) | 2024.11.08 |