[백준]node.js readline모듈로 입력받기

김성호·2022년 7월 26일
1

알고리즘 공부

목록 보기
2/3

지난번에 node.js에서 입력받기 위해 미리 만들어놓은 테스트 케이스를 참조하는 fs모듈을 활용한 방법을 알아봤다.

직접 입력받는 readline모듈에 비해 속도면에서 이점이 있지만 백준 14681번 문제에서 런타임 에러(EACCES)에 막혀버린다...

정확한 원인은 모르겠지만 백준 문제의 입력 디렉토리 dev/stdin 에 접근할 때 오류가 나는 것 같다.

그러므로 문제별로 fs모듈과 readline모듈 중에 잘 선택해서 입력을 받아야 한다.

readline모듈

한 줄 입력받기

const readline = require('readline');

const rl = readline.createInterface({
  input : process.stdin,
  output : process.stdout
}); // 입출력 인터페이스 객체 rl 생성

rl.on('line', function(line){
  // 입력받은 값은 line에 저장된다
  console.log(line);

  rl.close(); //close가 없으면 입력이 끝나지 않는다
}).on("close", function(){
  // 입력이 끝난 후 수행할 코드 입력
  process.exit();
});

공백 기준으로 입력받기

rl.on('line', function(line){
  input = line.split(' ').map(el => parseInt(el));
  // 문자열을 저장하고 싶으면 map함수를 제외하면 된다
  
  rl.close();
}).on("close", function(){
  console.log(input);
  process.exit();
});

여러 줄 입력받기

rl.on('line', function(line){
  input.push(line);
  // rl.close()가 없어서 입력을 종료시킬 때는 ctrl+c 단축키를 이용하면 된다
  
}).on("close", function(){
  console.log(input);
  process.exit();
});
profile
꾸준한 성장을 향해

0개의 댓글

관련 채용 정보