0.0.13 • Published 2 years ago

boj-solution-tester v0.0.13

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

boj-solution-tester

readme-example

자바스크립트로 백준 온라인 저지를 풀이하는 분들을 위한 테스팅 툴입니다.

npx boj-solution-tester --sol ./my/file.js --boj number

npx 커맨드를 통해 내가 풀이하고자 하는 문제의 입력 예제를 받아 내가 작성한 솔루션 함수를 실행해 볼 수 있습니다.

how to use

  1. 나의 솔루션 파일을 작성합니다.
  • 이 때 솔루션 파일의 함수는 const로 시작하거나 function으로 시작해야합니다.
const solution = () => {}; //ok
function solution() {} // ok
let solution = () => {}; // not ok
var solution = () => {}; // not ok
  • 해당 툴은 가장 상단에 선언된 변수나 함수를 실행해야할 함수로 인지합니다. 이에 따라 다음과 같은 형태에서는 에러가 발생할 수 있습니다.
const MY_GLOBAL_VARIABLE = 1000;
function solution() {}
// DON'T DO THAT
// 이 경우 MY_GLOBAL_VARIABLE을 실행해야할 함수로 인지합니다.
  1. 모든 예제 입력은 기본적으로 Array 타입으로 받아 옵니다.
/*
만약 문제에서 입력이 다음과 같다면,
===================================
예제 입력 1
5
20 10 35 30 7
===================================
*/

// 나의 함수는 다음과 같이 입력 받게 될 것입니다.
function solution(input) {
  console.log(input); // => ['5', '20 10 35 30 7']
}

/*
만약 문제에서 입력이 다음과 같다면,
===================================
예제 입력 1
150
266
427
===================================
*/

// 나의 함수는 다음과 같이 입력 받게 될 것입니다.
function solution(input) {
  console.log(input); // => [ '150', '266', '427' ]
}

/*
만약 문제에서 입력이 다음과 같다면,
===================================
예제 입력 1
Mississipi
===================================
*/

// 나의 함수는 다음과 같이 입력 받게 될 것입니다.
function solution(input) {
  console.log(input); // => [ 'Mississipi' ]
}

Q: 숫자입력을 문자로 받아오는 이유는 무엇인가요?
A: 기본적으로 문제를 크롤링하는 형태로 예제를 받아오기 때문에 기본값을 부득이하게 string으로 처리하도록 했습니다.

Q: 입력을 Array로 받는 이유는 무엇인가요?
A: 백준의 실행 환경과 다른 환경이라 매 입력을 자동화하기 어려웠기 때문입니다.

  1. 프로덕트의 한계로 다음과 같은 경우 문제의 제출을 Array 타입으로 리턴해야 정/오답 판별이 가능합니다.
/*
만약 문제에서 출력이 다음과 같다면,
===================================
예제 출력 1
1
===================================
*/
// 나의 함수의 리턴은 다음과 같아야 합니다.
function mySolution() {
  return 1;
}

/*
만약 문제에서 출력이 다음과 같다면,
===================================
예제 출력 1
30
30
===================================
*/

// 나의 함수의 리턴은 다음과 같아야 합니다.
function mySolution() {
  return [30, 30];
}
// 줄 바꿈이 있는 경우 각 행을 Array의 요소로 판단합니다.

/*
만약 문제에서 출력이 다음과 같다면,
===================================
예제 출력 1
1 3 5 4 6 9 2 7 8
7 8 2 1 3 5 6 4 9
4 6 9 2 7 8 1 3 5
3 2 1 5 4 6 8 9 7
8 7 4 9 1 3 5 2 6
5 9 6 8 2 7 4 1 3
9 1 7 6 5 2 3 8 4
6 4 3 7 8 1 9 5 2
2 5 8 3 9 4 7 6 1
===================================
*/

// 나의 함수의 리턴은 다음과 같아야 합니다.
function mySolution() {
  return [
    "1 3 5 4 6 9 2 7 8",
    "7 8 2 1 3 5 6 4 9",
    "4 6 9 2 7 8 1 3 5",
    "3 2 1 5 4 6 8 9 7",
    "8 7 4 9 1 3 5 2 6",
    "5 9 6 8 2 7 4 1 3",
    "9 1 7 6 5 2 3 8 4",
    "6 4 3 7 8 1 9 5 2",
    "2 5 8 3 9 4 7 6 1",
  ];
}

Q: 줄 바꿈이 존재하는 답인 경우 Array로 제출해야 하는 이유는 무엇인가요?
A: 마찬가지로 출력 예제를 크롤링해서 체크하는 환경인지라 백준의 실행 환경과 다른 환경이라 매 출력과 함수의 실행을 자동화하기 어려웠기 때문입니다.

  1. 커맨드 뒤에 나의 솔루션 파일과 백준 온라인 저지의 문제번호를 다음과 같이 기입합니다.
  • --sol 나의파일.js
  • --boj 문제번호
# 만약 터미널 위치 기준 ./algorithms/Solution1.js 파일을
# 10818번 문제에 대해 풀이 체크를 하고 싶다면
# 다음과 같이 입력합니다.

npx boj-solution-tester --sol ./algorithms/Solution1.js --boj 10818

감사합니다 !

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago