Coding/Reference
[JavaScript] 입출력
성으니:)
2021. 9. 10. 06:31
입력
1. readline 모듈
처음 생성 시 createInterface를 통해 input, output을 설정해준다.
다음에, 입력을 갖고 처리할 callback함수인 function(line)을 설정해준다.
기본적으로 매개변수 line에 할당되는 것이 입력값이며, 문자열로 할당된다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
// 입력 처리
//input = line.split(' ').map((el) => parseInt(el));
})
.on('close', function () {
// 출력
//console.log();
process.exit();
});
2. fs 모듈
fs 모듈은 FileSystem의 약자로 파일 처리와 관련된 모듈이다.
2-1) readFile()
filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출한다. (비동기적)
fs.readFile(filename, [options], callback)
2-2) readFileSync()
filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환한다. (동기적)
fs.readFileSync(filename, [options])
Sync가 붙은 것은 동기적 읽기, 붙지 않은 것은 비동기적 읽기이다.
동기적 읽기로 읽게 되면 파일을 읽으면서 다른 작업을 동시에 할 수 없다.
하지만 비동기적으로 읽으면 파일을 읽으면서 다른 작업도 동시에 수행할 수 있고,
파일을 다 읽으면 매개변수 callback으로 전달한 함수가 호출된다.
[options]에는 보통 인코딩 방식이 오게 되며 웹에서는 utf8을 주로 사용한다.
// 문자 하나만 입력받을 경우
let input = require("fs").readFileSync("/dev/stdin").toString()
//숫자로 변환
let num = Number(input)
// 한칸 띄어쓰기로 구분
// input[0], input[1] 배열에서 꺼내쓰면 된다.
let input = require("fs").readFileSync("/dev/stdin").toString().split(" ")
// 줄바꿈으로 구분
let input = require("fs").readFileSync("/dev/stdin").toString().split("\n")
let count = input[0];
let numbers = [];
for (let i = 1; i < input.length; i++) {
if (input[i] !== '') {
numbers.push(input[i].split(' '));
}
}
for (let i = 0; i < numbers.length; i++){
let num1 = Number(numbers[i][0]);
let num2 = Number(numbers[i][1]);
//console.log(num1 + num2);
}
출력
console.log()
[출처]
https://velog.io/@hjkdw95/%EB%B0%B1%EC%A4%80-Node.js-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%A0%95%EB%A6%AC
https://velog.io/@exploit017/%EB%B0%B1%EC%A4%80Node.js-Node.js-%EC%9E%85%EB%A0%A5-%EB%B0%9B%EA%B8%B0