coding/Node.js

readline 모듈

JIN_Coder 2022. 11. 12. 16:40

readline 모듈이란

한 번에 한 줄씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈

자바스크립트에서는 readline 모듈을 이용하면 콘솔을 통해 값을 입력받을 수 있다.

 

즉, 입출력을 한 줄씩 처리하는 모듈(알고리즘 문제 풀 때)

 

 

사용 방법

1. 모듈 불러오기

const readline = require("readline");

 

2. readline 모듈을 이용해 입출력을 위한 인터페이스 객체 생성

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

 

3. rl 변수 설정

rl.on("line", (line) => {
    // 한 줄씩 입력받은 후 실행할 코드
    // 입력된 값은 line에 저장된다.
    rl.close(); // 필수!! close가 없으면 입력을 무한히 받는다.
});
rl.on('close', () => {
    // 입력이 끝난 후 실행할 코드
    process.exit();
})

- 입력 부분

“line”: 입력받는 값을 한 줄씩 읽어 문자열 타입으로 전달하는 역할 하는 이벤트

rl.close()가 호출되면 입력이 끝났다는 것이고, 다음에 "close"이벤트를 발생시켜 입력값을 활용하여 출력 값을 도출하는 코드를 작성

즉, 입력받은 값을 사용하기 편하게 가공하는 부분

 

- 출력 부분

"close": 더 이상 입력되는 값이 없을 때 실행되는 이벤트

process.exit(): 프로세스 종료

즉, 입력 부분에서 가공한 입력값을 사용해 출력할 부분을 처리하는 부분

 

 

전체적인 코드

const readline = require("readline");
 
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
 
rl.on("line", (line) => {
    console.log("input: ", line);
    rl.close();
});
 
rl.on('close', () => {
    process.exit();
})

 

입력받은 값을 처리하는 방법

- 공백 값 입력

let input = []
 
rl.on("line", (line) => {
    input = line.split(' ').map(el => parseInt(el)); // 1 2 3
    rl.close();
});
 
rl.on('close', () => {
    input.forEach(el => {
        console.log(el);
    })
    process.exit();
})
 
// 입력
// 1 2 3
 
// 출력
// 1
// 2
// 3

 

- 여러 줄 입력

let input = []
 
rl.on("line", (line) => {
    input.push(line);
});
 
rl.on('close', () => {
    console.log(input);
    process.exit();
})
 
// 입력
// 1
// 2
// a
// b
 
 
// 출력 
// ['1', '2', 'a', 'b']

 

- 공백을 포함한 여러 줄 입력

let input = []
 
rl.on("line", (line) => {
    input.push(line.split(' ').map(el => parseInt(el)));
});
 
rl.on('close', () => {
    console.log(input);
    process.exit();
})
 
// 입력
// 1 2 3
// 4 5 6
 
// 출력 
// [[1, 2, 3], [4, 5, 6]]

 

 

 

내가 풀었던 알고리즘 문제

"*"를 이용하여 입력받은 값 정수 n 만큼의 높이가 n인 삼각형 출력

// 입력
// 3

// 출력
// *
// **
// ***

const readline = require("readline");

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

let input = [];
let arr = [];
let string = "*";

rl.on("line", function (line) {
    arr.push(Number(line));

    rl.close();
}).on("close", function () {
    for (let i = 0; i < arr[0]; i++) {
        input.push(string.repeat(i + 1));
        input.push("\n");
    }
    let solution = input.join("");
    console.log(solution);

    process.exit();
});

 

 

 

 

 

 

[Node.js] 자바스크립트 콘솔에서 입력 받는 방법

🎯 Node.js 콘솔창 입력받기 백준에서 알고리즘 문제를 풀 때 자바스크립트 입력받는 방법을 알아보자! 📝 한 줄 값 입력받기 자바스크립트에서는 readline 모듈을 이용하면 콘솔을 통해 값을 입력

lakelouise.tistory.com

 

'coding > Node.js' 카테고리의 다른 글

node-schedule  (0) 2022.09.14
로그 남기기 2 - morgan 사용  (0) 2022.09.10
로그 남기기 1 - winston 사용  (0) 2022.09.09
socket.io - 실시간 채팅 / 채팅방 구현  (2) 2022.09.07
소켓 / 웹소켓  (0) 2022.09.05