memostack
article thumbnail
블로그를 이전하였습니다. 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

 

GitHub - bluemiv/Algorithm: 알고리즘 풀이

알고리즘 풀이. Contribute to bluemiv/Algorithm development by creating an account on GitHub.

github.com

 

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 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기

 

jest 단위테스트를 이용하여 백준 알고리즘 문제 편하게 풀기

쉬운 문제는 웹 사이트에서 풀어도 되지만, 복잡한 문제는 여러 경우의 케이스에 대해서 실행해보는 경우가 생긴다. 백준에서는 다른 알고리즘 문제 사이트와 다르게 웹에서 실행해볼수가 없어

memostack.tistory.com

 

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!