BOJ에서 입력값 방법

Daniel Lim·2021년 4월 26일
0

문제풀이

목록 보기
1/19
post-thumbnail

백준 온라인 저지에서 javascript로 문제 풀때 입력값을 처리하는 방법이다.

처음 백준 온라인 저지에서 문제 풀이 시작했을때 어떻게 해야하는지 몰랐었는데, 이제 이해가 된다.

백준에서는 input에 대해서도 직접 코드를 작성해줘야 한다.

var fs = require('fs')

// 문자 하나
var input = fs.readFileSync('/dev/stdin').toString()

// split으로 한 칸 띄어쓰기로 구분 .split("공백")
// input[0], input[1] 배열에서 꺼내쓰면 됨
var input = fs
  .readFileSync('/dev/stdin')
  .toString()
  .split(' ')

// 줄바꿈으로 구분할 경우:
var input = fs
  .readFileSync('/dev/stdin')
  .toString()
  .split('\n')

// 만약 input이 숫자인 경우:
var input = fs
  .readFileSync('/dev/stdin')
  .toString()
  .split(' ')
  .map(function(a) {
    return +a
  })


위의 fs로 입력받는 방식은 일부 문제에서는 오류가 난다.
아래 readline 방식으로 입력받는 것을 추천함.

readline으로 입력받는 방법.

기본 코드 1개만 입력받는 경우

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// let input = [];

rl.on('line', function (line) {
  let n = Number(line);
    
  // 여기에 작성 ㄱㄱ

}).on('close', function () {
  process.exit();
});

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let result = '';
let number;

const onInput = (input) => number = Number(input);

const onClose = () => {
    for(let i=1; i<=number; i++) {
        result += `${i}\n`;
    }
    console.log(result);
    
    process.exit();
}

rl.on('line', onInput).on('close', onClose);



띄어쓰기로 입력 구분

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];

rl.on('line', function (line) {
  let input = line.split(' ');

    // 여기에 입력

  console.log();
}).on('close', function () {
  process.exit();
});



줄바꿈으로 입력 구분

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function(line) {
    input.push(line);
}).on('close', function () {
  // 여기에 코드 작성함. 입력 숫자 2개인경우 x, y로 해줬음.
    let x = Number(input[0]);
    let y = Number(input[1]);
    
    process.exit();
});


1번줄에 1개 숫자, 2번줄부터는 2개숫자

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

const array = [];

// 입력부분 작성
const onInput = (input) => array.push(input);

// 출력부분 작성
const onClose = () => {
    for(let i = 1; i <= array[0]; i++) {
        const [num1, num2] = array[i].split(' ');
        console.log(Number(num1) + Number(num2));
    }
    process.exit();
}

rl.on('line', onInput)
  .on('close', onClose);
profile
웹개발 잘하고 싶어요

0개의 댓글