본문 바로가기
Algorithm

[Algorithm] 백준 10818번 최소 최대 문제 Node.js 여러줄 입력 받기

by 개발자 염상진 2022. 6. 4.

 

 

Node.js 여러줄 입력 받는 방법

 

Node.js 환경에서 터미널 입력을 받기 위해서 사용하는 모듈은 readline 모듈이다. 여러줄 입력을 받기 위해서는 close 이벤트가 emit되기 전까지 입력값들을 한곳에 모아주는 것이다. realine 모듈은 rl.close() 메서드가 실행되기 전까지 계속해서 입력을 받기 때문에 count를 지정해서 입력받을 line 수를 지정할 수 있다.

 

const readline = require('readline');
const { stdin : input, stdout : output } = require('process');

const rl = readline.createInterface({input, output});


let count=0;
let inputValue = [];

rl.on('line', (line)=>{
    inputValue.push(line);
    count += 1;
    const N = parseInt(inputValue[0])

    if(N + 1 === count){
        rl.close();
    }
})

rl.on('close', ()=>{
    console.log(inputValue.join(' /'));
    process.exit();
})

 

 

 

백준 10818 최소 최대 문제

 

출처 : https://www.acmicpc.net/problem/10818

 

2줄의 입력을 받아 2번째 입력값 중 최소, 최대값을 구하는 문제다. 첫번째 입력값은 두번째 입력값의 길이를 나타내고 있고, 두번째 입력값 중 최소 최대를 찾아야 하는 문제다.

 

① 먼저 count를 지정해서 첫번째 라인에서 N을 입력받는다.

② 두번째 라인에서 split() 함수를 사용해서 배열로 만든 뒤 close() 메서드가 실행된 뒤에 정렬을 하고 가장 앞의 숫자와 끝의 숫자를 출력한다.

 

const readline = require('readline');
const { stdin : input, stdout : output } = require('process');

const rl = readline.createInterface({input, output});


let count = 0;
let inputValue = [];

rl.on('line', (line)=>{
    count += 1;
    if(count === 1){
        inputValue.push(line);
        const N = parseInt(inputValue.shift());
        inputValue = new Array(N);
    }else{
        inputValue = line.split(' ')
        rl.close();
    }
})

rl.on('close', ()=>{
    inputValue = inputValue.sort((a,b)=>a-b);
    console.log(`${inputValue[0]} ${inputValue[inputValue.length-1]}`)
    process.exit();
})

 

백준 10818 최소 최대 문제 정리

 

제출결과

 

문제 자체가 어렵다기보단 Node.js에서 여러줄에 걸친 입력값을 받는 방법에 대해 알고 있어야 풀 수 있는 문제다. Node.js에서 터미널 입력을 받기 위해 fs모듈이나, readline을 사용한다. 

 

 

Reference

 

댓글