프론트엔드 개발자의 기록 공간

[백준 node.js] node.js 입력 받기 본문

알고리즘_JS

[백준 node.js] node.js 입력 받기

[리우] 2020. 12. 16. 18:54

백준에서 node.js로 입력 받는 방법에 대해 소개하겠습니다.

흔히 두가지 경우가 사용됩니다.

 

1. readline 모듈 사용

2. fs모듈 사용

 

저는 vscode로 테스트하고 제출하기 때문에 2번의 경우 경로 문제가 발생하여 

저는 1번의 방식으로 풀고 있습니다. readline 모듈을 통해 입력을 받는 방법을 

소개하겠습니다.

 

한개의 입력시(띄어쓰기 없이)

//개발 로직 함수
function solution(input) {

   console.log(input);

}

 
//모듈
const readline = require("readline");

const rl = readline.createInterface({

    input: process.stdin,

    output: process.stdout,

});

 

let input;

rl.on("line", function (line) {

    //line를 통해서 사용자가 입력한 문자열이 들어온다.
    input = line;

	//정수형태로 사용할려면 parseInt로 형변환 필요
    input = parseInt(line);

    //한줄을 받고 입력 종료
    rl.close();

}).on("close", function () {

    //개발 로직 작성

    //필자의 경우 함수를 이용

    solution(input);

 

    //프로세스 종료

    process.exit();

});

 

한줄 입력시(띄어쓰기 포함)

function solution(input) {
   console.log(list);
}

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

let input;
let list = [];
rl.on("line", function (line) {
    //line를 통해서 사용자가 입력한 문자열이 들어온다.
    input = line;
    //한줄을 받고 입력 종료
    rl.close();
}).on("close", function () {

    //한줄에 입력된 값을 띄어쓰기 기준으로 list배열에 삽입.
    list.push(input.split(' ').map((el) => el));
    
    //입력된 문자열이 전부 정수라면 parseInt로 형변환
    list.push(input.split(' ').map((el) => parseInt(el)));
    

    //개발 로직 작성
    //필자의 경우 함수를 이용
    solution(list);

    //프로세스 종료
    process.exit();
});

 

여러줄 입력시

function solution(input) {
   console.log(list);
}

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

let input = [];
let list = [];
rl.on("line", function (line) {
   //여러줄 입력
   input.push(line)

   //rl.close()가 없어서 계속입력
   //로컬에서 입력을 중지할려면 입력을 한 후 'ctrl + D'을 통해 입력 종료
}).on("close", function () {

    // 이런식으로 적절하게 입력값을 처리해줘야한다.
    let n = parseInt(input[0]);

    //띄어쓰기 기준으로 배열에 넣기
    let list = input[1].split(' ').map((el) => parseInt(el));

    solution(list);

    //프로세스 종료
    process.exit();
});

 

 

즉, 백준에서 node.js를 이용할려면 많이 불편합니다. (왜 사람들이 안하는지 알겠습니다 ㅠㅠ 프로그래머스는 편한데....)

저 또한 처음에 어떻게 입력을 처리해야하는지 검색과 삽질을 통해 알아냈습니다.

저와 같은 경험이나 상황이신분들은 위 과정을 통해 고생을 덜 하셨으면 좋겠습니다.

 

혹시 더 좋은 방법이 있다면 댓글 부탁드리겠습니다!

728x90
Comments