Node.js 에서 stdin 입력 받는 법.

이한재·2023년 3월 12일
0

백준 문제를 풀기위해서 일반적으로 입력을 받아서 처리를 해야 한다.
그 때 필요한게 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', '' ]

처럼 파일로 부터 입력정보를 읽는 것이 가능하다.

node watch-cli

백준 문제 풀 때 파일 수정이 될 때 마다 프로그램을 실행하는것은 비효율적인 일이다.
따라서 watch 라는 프로그램을 이용하면 이 불편을 해소 할 수 있는데
Node.js 에서는 watch-cli 라는걸 이용하면 된다.

Insatll

npm i -g watch-cli

실행

watch -p '*.js' -c 'node app.js < input.txt'

-p 옵션에는 경로를 지정해주고 -c 옵션으로는 실행할 명령어를 입력하면 된다.
위 명령어에서는 node app.js 를 실행하고 입력을 파일로부터 받는 명령어를 입력했다.

추가

백준에서 프로그래밍 언어별 입력 받는 방법은
백준 사이트 Footer 에 보면 여러가지 도움말이 있는데 그 중

컴파일 또는 실행 옵션, 컴파일러 버전, 언어 도움말

로 들어가면 여러가지 프로그래밍 언어별 입력 받는 방법을 볼 수 있다.

profile
이한재입니다

0개의 댓글