How Can I console input value in Node.js (Using Javascript readline interface)
Javascript 입력값 받는 방법
Javascript로 알고리즘을 풀기 위해서는 기본적으로 입력값을 받아와야 한다. Javascript를 사용할 때 대부분 HTML의 엘리먼트들의 input value만을 가져오다가 콘솔창에서 입력을 받는게 굉장히 어색하게 느껴진다.
Javascript에서 입력값을 받기 위해서는 readline 모듈을 사용한다. 먼저 readline을 가져와서 인터페이스 객체를 생성한 후 프로세스 사이의 input과 output을 사용하면 된다.
const readline = require("readline");
한줄 입력 받는 방법
readline 모듈을 가져온 후 readline을 사용하는 인터페이스를 생성해준다. 객체를 생성할 때는 input, output context를 매개변수로 받아서 생성하게 됨.
const readline = require("readline");
const readSingle = readline.createInterface({
input : process.stdin,
output : process.stdin,
})
readline 인터페이스를 사용해서 이벤트 로직을 작성해준다. 입력받을 때의 이벤트 값은 'line'을 사용한다. 만약 이벤트가 완료되면 close 이벤트를 작성해서 process를 종료해준다.
// 모듈 추가
const readline = require("readline");
// readline 인터페이스 생성
const readSingle = readline.createInterface({
input : process.stdin,
output : process.stdin,
})
// line Event 생성
readSingle.on("line", (item)=>{
readSingle.close();
})
// clse Event 생성
readSingle.on("close", ()=>{
process.exit();
})
Javascript에서 콘솔 입력을 받고 출력하는 가장 기본적인 로직이 완성되었다.
공백을 포함한 입력값
백준 알고리즘에서는 공백을 포함하는 문자열을 입력받는 경우가 있다. 이 경우 위의 기본 입출력 로직을 사용해서 입력값을 파싱한 후 리스트 형식으로 받아오면 된다.
모듈을 가져오고 readline 인터페이스를 생성하는 부분은 동일한 로직을 사용하면 된다.
// 입력값을 담을 배열 생성
var inputList = [];
// 공백을 기준으로 문자열을 나누고, Int 형 데이터로 새로운 배열 생성
readSingle.on("line", (item)=>{
inputList = item.split(' ').map((e)=>parseInt(e));
readSingle.close();
})
readSingle.on("close", ()=>{
inputList.forEach((item)=>{
console.log(item);
})
process.exit();
})
여러 줄 입력받는 방법
여러 줄의 입력을 받기 위해서는 line 이벤트에서 close 이벤트를 호출하지 않고 계속해서 line 이벤트를 실행한다. 입력을 받는 로직이 계속 되기 때문에, 종료하기 위해서는 Ctrl+c를 눌러 강제로 종료해준다.
입력 로직이 종료되면 close 이벤트가 활성화되고, 배열로 받았던 입력값들을 한번에 출력해준다. close 이벤트 마지막 로직은 프로세스를 완전히 종료하는 exit 메소드를 호출한다.
const readline = require("readline");
const readSingle = readline.createInterface({
input : process.stdin,
output : process.stdin,
})
var resultList = [];
readSingle.on("line", (item)=>{
resultList.push(item.split(' ').map((e)=>parseInt(e)));
})
readSingle.on("close", ()=>{
resultList.forEach((item)=>{
console.log(item);
})
process.exit();
})
'Algorithm' 카테고리의 다른 글
[Algorithm] 재귀 알고리즘 Tree UI 구현하기 (0) | 2022.05.13 |
---|---|
[Algorithm] JSON.stringify 메소드 구현하기 (0) | 2022.05.13 |
[Algorithm] 러시아 전통인형 마트료시카 재귀 알고리즘 Matryoshka Algorithm (0) | 2022.05.12 |
[Algorithm] 재귀 알고리즘 배열 javascript 기본 문제 정리 (0) | 2022.05.12 |
[Algorithm] 재귀 알고리즘이란 recursion algorithm (0) | 2022.05.12 |
댓글