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();
});
'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 |