[백준/node.js] fs 모듈 런타임 에러
[14681번 사분면 고르기] 문제 풀이에서 계속 런타임 에러가 났다.
처음엔 답을 잘못 제출 했나? 했는데 아무리 봐도 맞는거 같아서 검색해봤더니
fs 모듈 문제라고 한다
https://www.acmicpc.net/board/view/66736
글 읽기 - node.js 런타임 에러
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
이전의 다른 문제들은 다 fs 모듈로 입력값을 받아서 원인을 찾지 못했던거다.
그래서 알아본 readline 모듈.
Readline 모듈
1. 한 줄 입력
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(line) {
console.log(line);
rl.close();
}).on('close', function() {
process.exit();
})
매개변수 line에 문자열로 입력값이 할당된다.
그리고 console.log(line); 에 입력 받은 값이 출력 된다.
만약 위의 코드에서 rl.close(); 부분이 없다면
무한으로 입력을 받으며 받은 만큼 실시간으로 console.log를 찍는다.
e.g. 두 수의 합
const readline = require('readline');
const rl = realine.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(input[0] + input[1]);
process.exit();
})
/*
input: 1 2
output: 3
*/
위 코드를 콘솔에서 실행하게 되면 close 이벤트에 걸리지를 않아서 console.log가 찍히지 않고, 입력만 계속해서 받게 된다.
그 이유는 콘솔에서 실행했기 때문이다.
2. 여러 줄 입력
const readline = require('readline');
const rl = realine.createInterface({
input: process.stdin,
output: process.stdout,
})
let input = [];
rl.on('line', function(line) {
input.push(line);
}).on('close', function() {
console.log(input);
process.exit();
})
++
또 다른 14681번 사분면 고르기 입력 받는 방법!
fs 모듈의 readFileSync의 인수 부분을 0 으로 하기
https://www.acmicpc.net/board/view/108553
글 읽기 - fs 모듈의 readFileSync의 인수 부분을 0 으로하는 이유가 뭔가요?
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
Reference
https://wooooooak.github.io/node.js/2018/09/26/Node.js-%EC%9E%85%EB%A0%A5-%EB%B0%9B%EA%B8%B0/