728x90
반응형
백준 9663번 N-Queen을 파이썬으로 풀다가 백준에서 백트랙킹 문제들을 파이썬으로 풀때 대부분 시간초과가 난다는 사실을 알게되었다. 백트랙킹 공부하려는데 시작부터 의욕이 떨어지니 풀이하는 언어를 바꾸려한다. 자바스크립트로 공부해두면 군대 인트라넷으로 몰래 공부할때도 크롬개발자도구로 컴파일해볼 수 있겠다싶어 자바스크립트를 이용해보려한다. 당분간은 새로운 문제를 더 풀기보다 최근 풀었던 문제들을 자바스크립트로 다시 풀어보려한다.
✏️ 백준에서 자바스크립트 (입력)
백준저지에는 자바스크립트가 없어 node.js로 풀이해야한다. 입력방식을 정리하려한다.
fs 모듈 이용
이걸 예시로해본다. 우선 아래는 예답이다.
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);
(각 코드 정의)
// 파일을 읽어오기 위해 Node.js의 built-in file system module fs 사용
var fs = require('fs');
//input을 읽어와 변수로 선언 & 할당
// 그 내용을 input에 저장, toString(), split()을 사용해서
// Array로 저장된다.
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
// input에서 지정한 value를 읽어와 다른 변수로 선언하고 활용
// toString메소드로 지금은 string이기 때문에, parseInt로 숫자로 형태변환을 해준다.
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a + b)
* 백준 밖에서 풀어볼때는 input값을 담은 txt파일을 만들어서 readFileSync에 담으면 된다. 백준에서는 /dev/stdin을 넣으면 된다.
readline 이용
fs모듈이 더 빠르다. readline을 이용해 시간초과가 난다면 fs모듈을 이용해보자.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const input = line.split(' ');
const result = Number(input[0])+Number(input[1]);
console.log(result);
rl.close();
}).on('close', ()=>{
process.exit();
});
line에 할당되는 것이 입력값이며 문자열로 할당이 된다.
readline
- readline 모듈은 한 번에 한 줄씩 Readable 스트림 (예 : process.stdin)에서 데이터를 읽기위한 인터페이스를 제공한다.
- readline.Interface는 readline.createInterface() 메쏘드를 통해 생성 가능하다.
close()
입력을 원하는만큼 받기 위해서는 특정 조건에 rl.close()를 추가해주면 된다.
728x90
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
백준 1915: 가장 큰 정사각형 해설- python (0) | 2022.02.19 |
---|---|
백준 7576: 토마토 해설- python (0) | 2022.02.17 |
백준 2667: 단지번호붙이기 해설- python (0) | 2022.02.13 |
백준 11724: 연결요소의 개수 해설- python (0) | 2022.02.11 |
백준 2606: 바이러스 해설- python (0) | 2022.02.10 |