이번에 코딩테스트를 본격적으로 준비하면서 JS로 언어를 바꿨는데 문제 푸는 사이트마다 node.js는 특히 입출력 시 생소하게 작성해야 해서 코딩테스트 시작하기 전에 정리하면 편할 것 같아서 정리해보고자 한다.
fs와 readline을 사용하는 경우가 있다. 허나 fs가 더 빠르다해서 백준에서도 권장하는 방식이다.
1. 한 개의 입력 값을 받을 때
1) fs
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let N = Number(input[0]);
2) readline
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on("line" , (line) => {
const inputValue = line.trim();
console.log(inputValue);
rl.close();
});
2. 한 줄에 여러 개 입력 받을 때
1) fs
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let [N,K] = input[0].split(" ").map(Number);
2) readline
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const inputValues = line.trim().split(" ");
rl.close();
});
3. 공백 없이 여러 개 입력 받을 때
1) fs
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('');
console.log(input); // 입력값 출력
2) readline
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const inputValues = line.trim().split("");
console.log(inputValues);
rl.close();
});
4. 한 줄에 한 개씩 여러 줄로 입력 값을 받을 때
1) fs
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
let N = Number(input[0]);
let values = input.slice(1, N + 1);
values.forEach(value => {
console.log(value); // 각 입력값 출력
});
2) readline
const readline = require("readline");
const input = [];
const rl = readline.createInterface({
rl.on("line", (line) => {
input.push(line.trim());
});
rl.on("close" , () => {
console.log(input);
});
5. 여러 개의 입력 값을 특정 형식으로 받을 때
1) fs
const fs = require('fs');
// 전체 입력을 받아 한 줄씩 나누어 배열로 저장
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
// 첫 줄의 숫자 N을 읽어 숫자로 변환
const numberLine = parseInt(input[0].trim());
// N개의 줄을 배열로 저장
const input2 = input.slice(1, numberLine + 1).map(line => line.trim());
// input2를 출력 (또는 다른 작업 수행)
console.log(input2);
2) readline
const readline = require("readline");
const input2 = [];
let numberLine = 0;
rl.on("line", (line) => {
if (numberLine === 0) {
numberLine = parseInt(line.trim());
} else {
input.push(line.trim());
if (input.length === numberLine) {
rl.close();
}
}
rl.on("close", () => {
console.log(input2);
});
});
예제 출력 값 : [ 'hello', 'world', 'test' ]
'코딩테스트 대비' 카테고리의 다른 글
소프티어 - LV1 연탄 배달의 시작 (0) | 2024.06.27 |
---|