[백준] Node.js 입출력

기본 코드 (Baekjoon Online Judge 도움말)

var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a+b);

 

line 1 - fs 모듈(= File System module)를 불러온다.

fs module이란, 파일 처리와 관련된 전반적인 작업을 하는 모듈

 

line 2 - fs 모듈의 readFileSync(동기적으로 파일을 읽는 함수)를 사용하여 stdin(표준입력) 파일을 불러온다.

line 3, 4 - 읽어드린 입력 내용을 형변환하여 변수에 저장한다.

 

 

그러나, 위의 코드는 제출용이기에 vscode에서 입출력을 할 땐 txt 파일을 통해서 입출력을 해야한다.

그래서 문제풀이용, 제출용으로 용도에 맞게 여러번 수정하지 않아도 되는 코드를 발견하였다.

 

 

문제 풀이용 - vscode에서 input.txt 파일을 만든 후 input.txt에 입력값을 넣고 테스트한다.
제출용 - 코드 수정 없이 제출한다.

 

const filePath = `linux` === process.platform ? `dev/stdin` : '테스트 파일';
const input = require('fs').readFileSync(filePath).toString().trim().split(` `);

 

1) 한줄 입력

const filePath = `linux` === process.platform ? `dev/stdin` : 'input.txt';

/* case 1. 해달별 */
const numbers = require('fs').readFileSync(filePath).toString().trim().split(``);

/* case 2. 1234 */
const numbers = require('fs').readFileSync(filePath).toString().trim().split(``).map(Number);

 

2) 공백으로 값을 구분지어 한줄 입력

const filePath = `linux` === process.platform ? `dev/stdin` : 'input.txt';

/* case 1. 해 달 별 */
const numbers = require('fs').readFileSync(filePath).toString().trim().split(` `);

/* case 2. 1 2 3 4 5 6 */
const numbers = require('fs').readFileSync(filePath).toString().trim().split(` `).map(Number);

 

3) 여러 줄 입력

const filePath = `linux` === process.platform ? `dev/stdin` : 'input.txt';

/*
case 1.
 5
 1 2 3 4 5
*/
const [N, numbers] = require('fs').readFileSync(filePath).toString().trim().split(`\n`);
const numArr = numbers.split(` `).map(Number)


/*
case 2.
 5 1
 1 2 3 4 5
*/
const [N, K, ...numbers] = require('fs').readFileSync(filePath).toString().trim().split(`\n`);
const numArr = numbers.split(` `).map(Number)

'Coding Test' 카테고리의 다른 글

[백준][JS] 9012번: 괄호  (0) 2023.05.12
[백준][JS] 2563번: 색종이  (0) 2023.05.03