백준 node.js 입출력 방법

원래 코테는 파이썬이지! 라는 생각을 갖고 파이썬으로 준비하고 있었는데(별로 한 적은 없지만..)
갑자기 어떤 회사 서류를 덜컥 붙어버렸고.. JS로 코테를 보라는 무시무시한 미션이 주어졌다.
언어 선택은 불가능했고.. 급하게 백준 문제를 풀기 위해 node.js 입출력 방법 검색 ㄲ.. 이미 많이 나와있지만 그래도 한 번 정리해본다.

fs 모듈을 이용하는 방법

1. 한 줄로 입력을 받을 때

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split(' ');

let num = Number(input);

for (let i = 1; i <= num; i++) {
  console.log(i);
}

2. 여러 줄로 입력을 받을 때

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let count = input[0];
let numbers = [];

for (let i = 1; i < input.length; i++) {
  if (input[i] !== '') {
    numbers.push(input[i].split(' '));
  }
}

for (let i = 0; i < numbers.length; i++){
  let num1 = Number(numbers[i][0]);
  let num2 = Number(numbers[i][1]);

  console.log(num1 + num2);
}

input에 배열로 다 받을 수 있는 더욱 간편한 방법(?)

const input = require("fs").readFileSync("/dev/stdin").toString().split("\n");

문자열 앞뒤 공백 제거해주는 간편한 방법(?)

const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");

readline으로 사용하는 방법

1. 한 개의 입력만 받을 때

function solution(input){
    console.log(input);
}

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let input;
rl.on("line", function(line){
    input = line;
    // input = parseInt(line); // 입력 값이 정수라면 parseInt로 형변환
    rl.close();
}).on("close", function(){
    solution(input);
    process.exit();
})

2. 한 줄의 입력을 받을 때 (띄어쓰기로 구분)

function solution(input){
    const [a,b] = input;
    const answer = a+b;
    console.log(answer);
}

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;
    rl.close();
}).on("close", function() {
    // list = input.split(' ').map((el) => el); 
    list = input.split(' ').map((el) => parseInt(el)); // 입력값이 정수라면 parseInt로 형 변환
    solution(list);
    process.exit();
});

3. 여러 줄의 입력을 받을 때

//여러줄  입력시(n, input)
function solution(n, input) {
    console.log(n);
    console.log(input);
}

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
let input = [];
rl.on("line", function(line) {
    input.push(line)
    //rl.close()가 없어서 계속 입력
    //로컬에서 입력을 중지하려면 입력을 한 후 ctrl+d로 입력 종료
}).on("close", function() {
    let n = parseInt(input[0]);
    let list = input[1].split(' ').map((el) => parseInt(el));
    solution(n, list);
    process.exit();
});


//여러줄 입력시(input1, input2)
function solution(input1, input2) {
    console.log(input1);
    console.log(input2);
}

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
let input = [];
rl.on("line", function(line) {
    input.push(line)
    //rl.close()가 없어서 계속 입력
    //로컬에서 입력을 중지하려면 입력을 한 후 ctrl+d로 입력 종료
}).on("close", function() {
    let list1 = input[0].split(' ').map((el) => parseInt(el));
    let list2 = input[1].split(' ').map((el) => parseInt(el));
    solution(list1, list2);
    process.exit();
});

출처: https://nyang-in.tistory.com/156

좋은 웹페이지 즐겨찾기