프로그래머스 혹은 릿코드처럼 입력을 신경쓰지 않고 알고리즘에만 집중할 수 있는 것과 달리 백준 알고리즘 문제들은 입력까지 고려해서 코드를 작성해야한다.
readline
const readline = require("readline");
readline.interface는 readline.createInterface()
메서드를 통해 생성하며 아래와 같이 사용한다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
위와 같은 방법으로 한줄로 입력을 받거나 여러줄 혹은 원하는 문제에서 제시하는 방법으로 정재할 수 있다.
fs
File System의 약자, 파일 처리와 관련된 모듈로 fs.readFile(filename, [options], callback)
와 같은 형태로 filename의 파일을 option의 방식으로 읽은 후 callback으로 전달된 함수를 호출한다.(비동기적)
fs.readFileSync(filename, [options])
위와 달리 동기적 읽기 방식으로 테스트 케이스 파일을 읽는데 주로 사용하며 직접 입력 파일을 읽어와서 처리한다.
readline
보다 빠른 속도를 기대할 수 있다.const fs = require("fs);
파일 시스템을 사용하기 위해 불러온다.
const data = fs.readFileSync("/dev/stdin").toString().split(" ");
fs.readFileSync("/dev/stdin")
의 값은 Buffer
객체이다.// 하나의 값을 입력 받았을 때
const data = fs.readFileSync("/dev/stdin").toString().trim();
// 공백을 포함한 한 줄의 값들을 받았을 때
const data = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
// 여러 줄의 값들을 받았을 때
const data = fs.readFileSync("/dev/stdin").toString().trim().split(`\n`);
// 받아온 데이터를 String이 아닌, Number로 받고싶다면 뒤에 map(el => +el);를 추가한다.