본문 바로가기

JS로 코테 준비하기/코테연습

[JS코테0] JS 입력 받는 방법

Input 받는 방식

https://minjo0n.tistory.com/2

 

[백준BOJ] JavaScript 입력 받는 방법 종류별 정리 - JavaScript(node.js)

아래의 내용은 제가 Javascript로 백준 사이트에서 문제를 풀 때 사용하는 방법을 공유하고자 작성한 글입니다.개선점에 대한 피드백 언제든 환영입니다!🙆‍♂️입력받는 방법으로 바로 이동하

minjo0n.tistory.com

참고해서 작성

 

1. fs 모듈 (권장)

- fs(File System module)로 파일 처리와 관련된 전반적인 작업 관장하는 모

- readline보다 빠르고 백준 권장이라 주로 쓰인다

const input = require('fs')
    .readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
    .toString().trim().split(" ").map(Number);

require로 fs 모듈 불러오기

readFileSync로 인풋 파일 읽기

- toString으로 Buffer->String으로 전환

- trim과 split로 인풋들 꺼내내기

- map(Number)로 각 인풋들 String->Number 전환

다 대충 짐작 가겠지만 명시하도록 하겠다. 

 

여기서 readFileSync가 뭔지 궁금할텐데

 

  • Reads the entire file synchronously
  • Blocks the thread until the file is fully read
  • Returns the file contents directly

그러면 asynchronous하게 읽어오는 방법도 있는가? 그렇다.

- fs가 아니라 fs/promises 모듈을 불러온다

- readFile이라는 함수를 사용한다

const fs = require('fs/promises');

async function read() {
  const data = await fs.readFile('example.txt', 'utf-8');
  console.log(data);
}
read();

 

하지만 코테에서는 잘 쓸일이 없으니 참고만 하면 되겠다

 

2. readline 모듈 사용

readline모듈은 Javascript 내장 모듈로 입력되는 값들을 readline을 통해 한 줄씩 읽어오고 입력과 출력을 아래와 같이 따로 분리하여 작성하는 형태로 구성되어 있다.

//readline 모듈 불러오기
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();//종료문
});

 

잘 안 쓸것 같아서 더 깊게 파고들지는 않겠다.