백준 사이트는 자바스크립트 언어를 사용하기위해서는 node.js 를 통해서 입출력을 받아야한다.
다른 블로그를 보면서 배운점을 공유하고자 글을 작성한다.
입출력을 받기위해서 두가지 방법이있는데
1. readline 모듈
2.fs 모듈
다만 시간 효율성을 따지자면 fs 모듈이 더빠르기때문에 fs 모듈을 사용하여 푸는것이 더 효율적이라고 생각한다.
https://help.acmicpc.net/language/info
언어 정보
section .data input: db "%d %d",0 output: db "%d",10,0 a: times 4 db 0 b: times 4 db 0 section .text global main extern scanf extern printf main: push rbp mov rdi, input lea rsi, [a] lea rdx, [b] mov rax, 0 call scanf mov rax, [a] mov rbx, [b] add rax, rbx
help.acmicpc.net
// 백준 도움말에서 제공하는 기본코드
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);
백준도움말에 보면 위 코드를 기본으로 제공한다.
간단하게 설명하자면 /dev/stdin 경로에 있는 값을 문자열로 만들고 split 메서드로 배열로 쪼갠뒤 입력값을 저장하고
저장된 입력값을 알맞게 가공하는 코드이다.
다른블로그에서 값을 입력받는 코드들을 정리한것을 보면서 백준문제를 풀어보았다.
// 1. 하나의 값을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim();
// 2. 공백으로 구분된 한 줄의 값들을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
// 3. 여러 줄의 값들을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
// 4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때
const [n, ...arr] = require('fs').readFileSync('/dev/stdin').toString().trim().split(/\s/);
// 5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때
const [n, ...arr] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
// 6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽박죽 섞여서 입력받을 때
// ex) n 입력 - 공백으로 구분된 n개의 값 입력 - m 입력 - 여러 줄에 걸쳐 m개의 값 입력
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(/\s/);
const n = input[0];
const n_arr = input.slice(1, n+1);
const [m, ...m_arr] = input.slice(n+1);
// 2~6에서 입력받는 값들을 모두 String에서 Number로 바꾸려면 split()뒤에 .map(v => +v)를 추가
출처 https://tesseractjh.tistory.com/39?category=473836
Node.js로 백준(BOJ) 문제 풀 때 유의할 점들
백준에서 Node.js로 입력을 받는 방법은 크게 두 가지가 있다. 첫 번째는 readline 모듈을 사용하는 것이고, 두 번째는 fs 모듈을 사용하는 것이다. (이 글에서는 fs 모듈에 대해서만 다루겠다.) Python으
tesseractjh.tistory.com