-
[JS/Node.js] readline을 통한 입출력Algorithm & Data Structure 2022. 3. 12. 07:50SMALL
자바스크립트에서 콘솔을 통해 값을 입력받기 위해 몇 가지 방법이 있는데,
그 중 readline 모듈을 이용한 방법에 대해 정리하려 한다.
(앨리스를 통해 공부한 것을 정리하였음)
기본 코드는 다음과 같다.
const readline = require("readline"); //readline 모듈 가져옴 const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); //readline 모듈을 이용해 입출력 객체 생성 rl.on("line", (line) => { // 한 줄씩 입력받은 후 실행할 코드 // 입력된 값은 line에 저장된다. rl.close(); // close가 없으면 입력을 무한히 받는다. }); rl.on('close', () => { // 입력이 끝난 후 실행할 코드 })
on 메소드를 이용해서 'line' 이벤트가 발생 시 실행할 동작을 지정할 수 있다.
입력 이벤트는 줄바꿈을 나타내는 \n, \r, \r\n 문자나 enter를 누를 때 발생한다.
'close'이벤트도 'line' 이벤트와 비슷하게 작성하는데,
더 이상 입력 받을 게 없을 때 rl.close()를 호출해서 발생시킨다.
1. 한 줄 입력받기
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { console.log(line); rl.close(); }); rl.on('close', () => { process.exit(); })
2. 여러 줄 입출력
let cnt = 0; rl.on("line", (line) => { cnt +=1; //입력 횟수 증가 if (cnt ===1) { //첫번째 입력일 때 동작 } else if (cnt===2) { //두번째 입력일 때 동작 } else if (cnt===3) { //세번째 입력일 때 동작 } else { //네번째 입력일 때 동작 rl.close(); } }).on("close", ()=> { //입력 종료 후 동작할 코드 });
3.n줄 입력
첫번째 줄에 입력된 수를 변수로 저장해뒀다가 cnt 변수가 그 숫자보다 커질 때까지 입력을 받으면 된다.
let cnt = 0; //몇 번째 입력인지 기록 let n = 0; //첫번째 줄에 입력된 수 let arr = []; rl.on("line", (x)=> { cnt +=1; //입력 횟수 증가 if(cnt===1) { n = x; //1번째 입력인 경우 주어질 입력 개수 기록 } else { arr.push(x); //이후 입력되는 n개의 입력은 배열에 저장 } if (cnt>n) { rl.close(); //기록이 입력받을 수보다 커지면 종료 } }).on("close",() => { console,log(arr); });
4. 공백을 기준으로 값 입력받기
let arr = []; rl.on("line", (line) => { arr = line.split(' ').map(el=>parseInt(el)); rl.close(); }).on("close",() => { arr.forEach(el=> { console.log(el) }); process.exit(); }) //입력 //1 2 3 //출력 //1 //2 //3
숫자 연산을 위해 map함수를 사용하고, parseInt를 이용해 문자를 숫자로 변환한다.
반응형'Algorithm & Data Structure' 카테고리의 다른 글
[JS]어쩌다 까먹는 자바스크립트 배열 메소드/함수 총정리 (0) 2022.03.13 [JS] 재귀 함수(Recursive Function) (0) 2022.01.31 [JS] Getter와 Setter (0) 2022.01.25