블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
문제의 저작권은 백준 알고리즘(https://www.acmicpc.net/)에 있습니다.
문제
풀이
처음에는 process.stdin.on()
으로 입력을 받아서 풀었는데, 여러 줄을 입력을 받을 수 가 없어서 readline
모듈을 활용하여 여러 줄을 받을 수 있도록 했다.
const solution = (input) => {
const lines = input.map((s) => s.trim());
return lines
.slice(1, lines[0] + 1)
.map((l) => l.split(' ').reduce((acc, _n) => acc + +_n, 0))
.join('\n');
};
const input = [];
require('readline')
.createInterface({ input: process.stdin })
.on('line', (line) => input.push(line))
.on('close', (_) => {
console.log(solution(input));
process.exit(0);
});
전체 코드
https://github.com/bluemiv/Algorithm/blob/master/baekjoon/nodejs/src/ex10/ex10950.js
process.stdin.on()으로 못는 것은 아니지만 위와 같은 방법으로 푸는게 더 가독성이 높아 보인다. (아래 코드는 process.stdin.on으로 푼 경우)
const solution = (input) => {
const nums = input.split(/\s/).map((s) => +s);
let temp;
return nums
.slice(1, nums.length)
.reduce((acc, n, idx) => {
if (idx % 2 !== 0) {
acc.push(temp + n);
} else {
temp = n;
}
return acc;
}, [])
.join('\n');
};
const print = (input) => console.log(solution(input + ''));
process.stdin.on('data', print);
백준은 문제를 푸는것에도 신경을 써야 하지만 입력받는 방법에도 신경을 써야하고, 쓸데없는 곳에 시간을 써야하는 불편함이 있는것 같다..
풀이 결과
관련 글
2022.07.21 - [Algorithm/Beakjoon] - jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
백준 15552번 / 빠른 A+B (nodejs 알고리즘 풀이) (0) | 2022.07.28 |
---|---|
백준 8393번 / 합 (nodejs 알고리즘 풀이) (0) | 2022.07.27 |
백준 2739번 / 구구단 (nodejs 알고리즘 풀이) (0) | 2022.07.25 |
백준 2480번 / 주사위 세개 (nodejs 알고리즘 풀이) (0) | 2022.07.24 |
백준 2525번 / 오븐 시계 (nodejs 알고리즘 풀이) (0) | 2022.07.23 |