Javascript

Readline 모듈 ♦︎

Yujzu 2024. 2. 24. 20:48

문제:

알고리즘 풀이 연습중 띄어쓰기와 엔터가 포함되어 있는 

1 2

2 3

4 5

위와 같은 값을 input으로 받아오는 부분에서 막힘

 

# Readline 모듈

: Node.js에서 입력을 받을 때 사용하는 내장 모듈

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

- 터미널에서 입력을 읽고 처리하는 기능을 제공한다.

- 주로 CLI 프로그램에서 사용자 입력을 받을 때 사용

- 이벤트 기반으로 동작 (line, close 등)

 

[ 사용방법 ]

1. readline 모듈 불러오기

- require 메서드를 사용하여 외부 모듈인 readline을 불러온다.

const readline = require("readline");

 

2. readline 인터페이스 생성

- readline 의 createInterface 메서드를 이용하여 Interface 인스턴스를 생성

- 입력값과 출력값을 지정해준다.

const rl = readline.createInterface({
  	input: process.stdin,  // 입력을 read하는 통로
  	output: process.stdout, // 출력을 write하는 통로
});

process.stdin : standard input 에 대한 readable stream

process.stdout : standard output 에 대한 writable stream

* stream은 데이터, 파일의 흐름, 프로그램과 환경 사이에 연결된 입출력 통로

 

3. 입출력 처리

rl.on으로 이벤트와 콜백함수를 전달

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

- close : 더 이상 입력값이 없을 경우에 해당하는 이벤트

// 입력값을 사용할 수 있는 input type으로 변환
rl.on("line", (line) => {
  	/*입력값 처리 코드*/
	rl.close(); // 인터페이스를 종료하여 무한히 입력받지 않도록 함
});  

// 실제 함수
rl.on("close", () => {
  	/*입력 이후 실행 코드*/
	process.exit(); // 프로세스 종료
});

or

let arr = []
rl.on("line", (line) => {
	/*입력값 처리 코드*/
    방법1. 띄어쓰기, 엔터가 포함된 input 값을 array에 넣어버림
    arr.push(line.split(" ").map(Number))
}).on("close", ()=>{
  	/*입력 이후 실행 코드*/
    arr를 구분하여 사용
	process.exit();
})

 

 

 

 

 

출처: https://velog.io/@pexe99/JavaScript-readline-%EA%B7%B8%EA%B2%8C-%EB%AD%94%EB%8D%B0

'Javascript' 카테고리의 다른 글

[JS] 이벤트 버블링, 이벤트 캡처링 ♦︎  (0) 2024.07.05
[JS] Javascript 문법적 특징  (1) 2024.07.01
Javascript 기초문법 - class  (2) 2024.06.28
[JS] Prototype  (1) 2024.05.26
[JS] 모듈, ESM, export, import ♦︎  (2) 2023.11.15