Node.js에서 콘솔에 입출력을 받는 방식은 크게 2가지이다.
백준에서도 이 방법을 사용하여 알고리즘을 풀어야하니 정확히 이해해둘것!⭐️
readline 모듈은 JS 내장 모듈로, 한 번에 한 줄씩 Readable 스트림 (예 : process.stdin)에서 데이터를 읽기위한 인터페이스를 제공한다.
처음 생성 시 createInterface
를 통해 input
, output
을 설정해준다.
다음에, 입력을 갖고 처리할 callback함수인 function(line)
을 설정해준다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(line) {
console.log(line); //입력 값을 처리할 callback 내용 기제
rl.close(); //callback 종료
}).on("close", function() {
process.exit(); // 출력과 관련된 내용 기재 (console.log같은거..)
});
매개변수 line
에 할당되는 내용이 입력값이다 (문자열로 할당)
입력을 원하는만큼 받기 위해서는 원하는 조건을 입력한 후, rl.close()
를 기재하면 된다.
즉, rl.close()
는 말 그대로 입력을 멈추는 기능을 하는 것!
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let count = 0;
rl.on('line', (input) => {
console.log(`Recived : ${input}`);
count += 1;
if (count === 3) {
rl.close();
}
// 위의 경우 입력을 3번 받은 후 close한다
});
fs 모듈은 FileSystem의 약자로 파일 처리와 관련된 모듈이다.
fs.readFile(filename, [options], callback)
filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출한다. (비동기적)
fs.readFileSync(filename, [options])
filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환한다. (동기적)
Sync가 붙은 것은 동기적 읽기, 붙지 않은 것은 비동기적 읽기이다.
동기적 읽기로 읽게 되면 파일을 읽으면서 다른 작업을 동시에 할 수 없다.
하지만 비동기적으로 읽으면 파일을 읽으면서 다른 작업도 동시에 수행할 수 있고,
파일을 다 읽으면 매개변수 callback으로 전달한 함수가 호출된다.
[options]에는 보통 인코딩 방식이 오게 되며 웹에서는 utf8
을 주로 사용한다.
var fs = require("fs")
// 문자 하나만 입력받을 경우
var input = fs.readFileSync("/dev/stdin").toString()
// 한칸 띄어쓰기로 구분
// input[0], input[1] 배열에서 꺼내쓰면 된다.
var input = fs
.readFileSync("/dev/stdin")
.toString()
.split(" ")
// 줄바꿈으로 구분
var input = fs
.readFileSync("/dev/stdin")
.toString()
.split("\n")
// 만약 인풋값이 숫자라면
var input = fs
.readFileSync("/dev/stdin")
.toString()
.split(" ")
.map(function(a) {
return +a
})
두가지 방법 모두 console.log
를 사용한다
너~~~무 좋은 글이네요 ^^