반응형
노드 입력받기
프로그래머스는 오롯이 문제에 집중할 수 있고 UI가 깔끔한 반면 백준 온라인 저지 사이트는 문제를 유형별로 묶어서 풀 수 있으며 다양한 장점이 있지만 직접 입출력 처리를 해줘야 한다는 단점이 있습니다. 그중에서도 Node.js를 이용하려면 많이 불편한 편이기에 참고하기 위해 글을 작성해보려 합니다.
흔히 readline Module과 fs Module을 이용해 입력받지만 fs의 경우 특정문제에서 런타임 에러가 발생하는 경우가 있다고 합니다.
한 단어 입력 - 구분자, 띄어쓰기 미포함
/* fs Module */
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split();
console.log(input);
/* readline Module */
// 문제 풀이
function solution(input) {
// 답변 출력
console.log(input);
}
/* readline Module */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
rl.on("line", function (line) {
input = line; // 입력받은 문자열, line
input = parseInt(line); // 형변환, parseInt
rl.close(); // 입력 종료
}).on("close", function () {
solution(input); // 문제 풀이 함수 호출
process.exit(); // 프로세스 종료
});
한 줄 입력 - 구분자, 띄어쓰기 포함
/* fs Module */
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split();
let [ A, B ] = input.map(num => Number(num))
console.log( A + B );
/* readline Module */
// 문제 풀이
function solution(input) {
// 답변 출력, list
console.log(input);
}
/* readline Module */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
let list = [];
rl.on("line", function (line) {
input = line; // 입력받은 문자열, line
rl.close(); // 입력 종료
}).on("close", function () {
// 형변환, 구분자(띄어쓰기)기준으로 배열에 삽입
list = input.split(' ').map((el) => Number(el));
solution(list); // 문제 풀이 함수 호출
process.exit(); // 프로세스 종료
});
여러 줄 입력
/* fs Module */
input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
for(let i=1; i < input.length; i++) {
let [ A, B ] = input[i].split(' ');
console.log( Number(A) + Number(B) );
}
/* readline Module */
// 문제 풀이
function solution(input) {
// 답변 출력, list
console.log(input);
}
/* readline Module */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
let list = [];
rl.on("line", function (line) {
input.push(line) // 입력받은 여러줄, line
// rl.close()이 없기에 계속 입력, 로컬에서 입력을 중지할려면 입력을 한 후 'ctrl + D'을 통해 입력 종료
}).on("close", function () {
// 형변환, 구분자(띄어쓰기)기준으로 배열에 삽입
input.forEach((val) => {
list.push(val.split(' ').map((el) => parseInt(el)));
});
solution(list); // 문제 풀이 함수 호출
process.exit(); // 프로세스 종료
});
Reference
반응형
'ALGORITHM > Baekjoon' 카테고리의 다른 글
[Javascript] 백준 10773번 문제, 제로 (feat.stack, reduce, Node.js) (24) | 2023.04.08 |
---|---|
[Javascript] 백준 1316번 문제, 그룹 단어 체커 (feat.slice, includes, Node.js) (16) | 2023.04.01 |
[Javascript] 백준 2750번 문제, 수 정렬하기 (feat.shift, sort, Node.js) (41) | 2023.03.26 |
[Javascript] 백준 2444번 문제, 별 찍기 - 7 (feat.Node.js) (28) | 2023.03.18 |
[Python] 백준, 파이썬 입력받기 (feat.input, split, map) (24) | 2023.03.12 |