백준 문제를 풀기위해서 일반적으로 입력을 받아서 처리를 해야 한다.
그 때 필요한게 stdin 으로부터 입력을 받아서 프로그램내에서 입력값을 받을 수 있어야 한다.
// app.js
var fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString()
console.log(input)
fs 모듈을 불러와서 readFileSync 함수에 '/dev/stdin' 으로 해주게 되면
node app.js
로 실행을 했을 때 입력을 할 수 있게 되고
입력을 다 마친 후
Ctrl+D 를 눌러 프로그램 실행을 종료했을 때 input 의 출력값을 확인 할 수 있다.
node app.js
$ 1
$ 2
// Ctrl + D 로 프로그램 실행 종료
$ ['1\n2\n']
또는 파일의 내용을 프로그램 실행시 전달해주는 방법도 '<' 부호를 사용하여 가능하다.
// input.txt
3
6 3 20
8 4 2
4 1 8
// app.js
var fs = require('fs')
const lines = fs.readFileSync('/dev/stdin').toString().split('\n')
console.log(lines)
실행
node app.js < input.txt
$ [ '3', '6 3 20', '8 4 2', '4 1 8', '' ]
처럼 파일로 부터 입력정보를 읽는 것이 가능하다.
백준 문제 풀 때 파일 수정이 될 때 마다 프로그램을 실행하는것은 비효율적인 일이다.
따라서 watch 라는 프로그램을 이용하면 이 불편을 해소 할 수 있는데
Node.js 에서는 watch-cli 라는걸 이용하면 된다.
npm i -g watch-cli
watch -p '*.js' -c 'node app.js < input.txt'
-p 옵션에는 경로를 지정해주고 -c 옵션으로는 실행할 명령어를 입력하면 된다.
위 명령어에서는 node app.js 를 실행하고 입력을 파일로부터 받는 명령어를 입력했다.
백준에서 프로그래밍 언어별 입력 받는 방법은
백준 사이트 Footer 에 보면 여러가지 도움말이 있는데 그 중
컴파일 또는 실행 옵션, 컴파일러 버전, 언어 도움말
로 들어가면 여러가지 프로그래밍 언어별 입력 받는 방법을 볼 수 있다.