백준 2738 행렬 덧셈
2023. 3. 12. 13:55ㆍ코딩 공부 연습
반응형
백준 2738 행렬 덧셈
타입스크립트를 통해 2차원 배열을 만들고 이용하기 위한 연습 문제로 풀어 보았는데, 좀처럼 안되어 그냥 1차원 배열로 만들어 문제를 해결하였다. 이번에 새로 알게 된 내용을 정리하면 다음과 같다.
console.log 로 한줄을 찍으면 무조건 개행이 하나 들어가기 때문에 그렇지 않은 출력 형식을 알아내야 했다.
process.stdout.write(sum.toString() + ' ');
다음의 출력 형식을 사용하면 개행이 들어가지 않게 출력할 수 있는데, 대신 toStirng으로 스트링 타입으로 변환해 주어야 한다.
입력에 개행, 띄어쓰기 기준으로 마구 잘려 나가 있는 입력을 해결하기 위한 방안이 필요하다.
우선 개행을 기준으로 input.txt 를 분리해 받는다. 이후 이 Input 들을 필요에 따라 ' ' 기준으로 split 하면 된다.
배열을 순회하고 삽입하고 빼는 명령어들이 몇가지가 있는데, 우선 shift 연산을 살펴보자. - shift 연산은 배열 인덱스 하나를 이동시킨다. - push 연산을 통해 객체를 삽입할 수 있다.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
let firstline = input[0].split(' ');
input.shift();
let a = +firstline[0];
let b = +firstline[1];
let arr1: number[] = [];
let arr2: number[] = [];
for (let i = 0; i < a; i++)
{
let oneline = input[i].split(' ');
for (let j = 0; j < b; j++)
{
arr1.push(oneline[j]);
}
}
for (let i = a; i < a*2; i++)
{
let oneline = input[i].split(' ');
for (let j = 0; j < b; j++)
{
arr2.push(oneline[j]);
}
}
let arr3: number[] = [];
for (let i = 0; i < a; i++)
{
for (let j = 0; j < b; j++)
{
const sum = +arr1[i*b + j] + +arr2[i*b + j];
process.stdout.write(sum.toString() + ' ');
}
if ( i != a-1)
{
console.log('');
}
}
아직까지 코드가 많이 c 스러운 점이 맘에안든다. 좀 고쳐나갈 수 있으면 좋겠다.
'코딩 공부 연습' 카테고리의 다른 글
백준 1330 두 수 비교하기 (0) | 2023.03.12 |
---|---|
백준 2739 구구단 (0) | 2023.03.12 |
백준 2475 검증수 (0) | 2023.03.11 |
백준 9934 완전 이진 트리 (0) | 2023.03.04 |
백준 15900 나무 탈출 (1) | 2023.03.03 |