ETC/📋 Coding Tests

[백준/node.js] fs 모듈 런타임 에러

숭코기 2023. 11. 28. 12:57
728x90

 

[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/

 

728x90