백준 풀 때,
예제 하나 하나 복사해서 코드 실행하고 붙여넣고, 예제 출력이랑 맞는지 확인하고..
정말 귀찮다.....
게으른 나에겐 항상 자동화가 최종 목표였다. 노션에 백준 문제 커밋 자동화부터 시작해서 두 번째로 만든 백준 예제 자동화이다.
내가 test.py에 백준 1000번 문제를 풀면,
BOJ-Auto-Test의 main.py는
그 test.py를 기반으로 파이썬의 subprocess 모듈을 사용하여 모든 예제에 대해 코드 파일을 여러 번 실행하는 것이다.
하지만 문제 번호에 대한 예제도 직접 가져오기는 절 대 귀찮으니 웹 스크레이핑으로 가볍게 가져온다.
git clone https://github.com/chaseungjoon/BOJ-Auto-Test.git
cd BOJ-Auto-Test
pip install -r requirements.txt
문제를 푼 코드 파일의 주소를 line 7에 적는다. (❗이거 계속 수정하기 귀찮으니까 그 파일에 계속 푸는걸로)
code_dir = ~/Desktop/Code/solve.py
문제를 푼 코드를 컴파일 할 executable 파일의 주소를 line7에 적는다 (컴파일은 나중에 터미널 script 함수에서 한꺼번에 할 예정)
code_dir = ~/Desktop/Code/executeable
line 9를 다음과 같이 고친다
code_info = [code_dir]
터미널에서 쉽게 테스트할 수 있도록 script 함수를 설정해준다.
Linux / Mac (윈도우는 어떻게 설정하는지 아시는분 댓글로 부탁드립니다)
open ~/.zshrc
open ~/.bashrc
1) Python 으로 푼 경우
testpy() {
python3 main.py의 주소 "$1"
}
2) C / C++ 로 푼 경우 (컴파일 후, main.py 실행)
testcpp() {
g++ -o execuatble주소 푼코드파일주소 && python3 main.py의 주소 "$1"
}
source ~/.bashrc
source ~/.zshrc
1) 문제를 정해놓은 파일에 푼다.
2) 터미널에서 위에서 정한 script 함수를 문제 번호와 함께 실행한다
testpy 1025
testcpp 1025
2-1) script 함수를 설정하지 않은 경우
cd BOJ-Auto-Test
(c/c++ 이면 컴파일 먼저 하고)
python main.py 1025
3) 결과
예제 다 맞은 경우
예제와 답이 다를 경우 정답과 오답을 보여준다
코드가 오류 날 경우 오류를 말해준다