[JS로 코딩테스트 준비하기] 백준(BOJ) 입력받기

Hannah Lee·2022년 8월 11일
3

😎 서론

Javascript는 APS에서는 확실히 주류가 아니다. Javascript로 코딩테스트 공부를 해야겠다고 마음 먹은 순간부터 느낄 수 있다. 입력부터 막막하거든!

기업에서 주로 채택하고 있는 프로그래머스(Programmers) 에서는 Javascript 문제 풀이 환경이 잘 되어있지만, 최근 기업용 코딩테스트 플랫폼으로의 채택률이 커지고 있는 구름(goorm) 이나 국내 최대 APS 사이트인 백준(BOJ) 에서는 입력을 조금 신경써줘야 한다.

일단 백준 입력 방법부터 정리한 뒤, 추후에 구름 입력 방법을 추가하려고 한다.

😎 백준

채점 언어를 Javascript가 아닌, Node.js로 선택한다. Javascript에서는 입력을 받을 때 readline 모듈과 fs 모듈을 사용하는데, 백준에서는 fs 모듈 방식을 권장하고 있다. (readline은 fs에 비해 다양한 내부 메서드가 있지만, 비교적 느리다고 함)

한 줄 입력 받기

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

console.log(input);

여러 줄 입력 받기

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);
}

핵심은 .split()의 argument로 들어가는 게 공백이냐, \n이냐 다.

백준 채점이 아닌, VSCode에서 실행할 때

  1. 터미널에서 npm install fs 명령어 실행
  2. 폴더 내, 원하는 위치에 input.txt 파일 생성 (테스트 케이스가 들어가는 파일)
  3. 위의 코드에서 fs.readFileSync('/dev/stdin') 대신 fs.readFileSync('input.txt의 경로') 입력 (단, 백준에 제출할 때는 다시 /dev/stdin 으로 바꿔줄 것)
  4. 콘솔창에 node 알고리즘작성한js파일경로 입력해서 내가 작성한 알고리즘 실행

😎 프로그래머스 (참고)

solution(input1){
  let answer = input1;
  
  return answer;
}

프로그래머스에서는 사용자가 (입출력이 아닌) 알고리즘 로직 자체를 구현하는 데에 집중할 수 있도록 solution 함수 형태로 입력을 받고 있다. 난 solution 함수 내에서 로직을 구현하기만 하면 된다. 정말 편하다!

profile
프론트 어쩌고

0개의 댓글