자바스크립트로 백준 풀이하기
프로그래밍/백준

자바스크립트로 백준 풀이하기

728x90
반응형

백준 9663번 N-Queen을 파이썬으로 풀다가 백준에서 백트랙킹 문제들을 파이썬으로 풀때 대부분 시간초과가 난다는 사실을 알게되었다. 백트랙킹 공부하려는데 시작부터 의욕이 떨어지니 풀이하는 언어를 바꾸려한다. 자바스크립트로 공부해두면 군대 인트라넷으로 몰래 공부할때도 크롬개발자도구로 컴파일해볼 수 있겠다싶어 자바스크립트를 이용해보려한다. 당분간은 새로운 문제를 더 풀기보다 최근 풀었던 문제들을 자바스크립트로 다시 풀어보려한다.

 

그냥 넣은 사진

 

✏️ 백준에서 자바스크립트 (입력)

백준저지에는 자바스크립트가 없어 node.js로 풀이해야한다. 입력방식을 정리하려한다.

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

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
반응형