기본 코드 (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 |