boj-solution-tester
v0.0.13
Published
boj-solution-tester
Downloads
12
Maintainers
Readme
boj-solution-tester
자바스크립트로 백준 온라인 저지를 풀이하는 분들을 위한 테스팅 툴입니다.
npx boj-solution-tester --sol ./my/file.js --boj number
npx
커맨드를 통해 내가 풀이하고자 하는 문제의 입력 예제를 받아 내가 작성한 솔루션 함수를 실행해 볼 수 있습니다.
how to use
- 나의 솔루션 파일을 작성합니다.
- 이 때 솔루션 파일의 함수는
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을 실행해야할 함수로 인지합니다.
- 모든 예제 입력은 기본적으로 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: 백준의 실행 환경과 다른 환경이라 매 입력을 자동화하기 어려웠기 때문입니다.
- 프로덕트의 한계로 다음과 같은 경우 문제의 제출을 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: 마찬가지로 출력 예제를 크롤링해서 체크하는 환경인지라 백준의 실행 환경과 다른 환경이라 매 출력과 함수의 실행을 자동화하기 어려웠기 때문입니다.
- 커맨드 뒤에 나의 솔루션 파일과 백준 온라인 저지의 문제번호를 다음과 같이 기입합니다.
--sol 나의파일.js
--boj 문제번호
# 만약 터미널 위치 기준 ./algorithms/Solution1.js 파일을
# 10818번 문제에 대해 풀이 체크를 하고 싶다면
# 다음과 같이 입력합니다.
npx boj-solution-tester --sol ./algorithms/Solution1.js --boj 10818