기타

[백준/BOJ] 백준 "맞았습니다" 정답 코드 추출, 저장하는 법 (코드 모음 만드는 법)

restudy 2021. 12. 29. 08:55
반응형

이 포스트에서는 프로그래밍 문제 사이트 백준 Online Judge(BOJ)의 "맞았습니다" 또는 정답 코드를 추출하여 따로 저장하는, 정답 코드 모음 만드는 방법을 다루고 있습니다.

 

깃허브에 자신의 코드를 정리해서 올리고 싶거나 또는 정답 코드만 따로 모아두고 싶을 때 Python 코드를 이용하여 이를 자동화시키는 방법이 있습니다.

 

다른 분이 깃허브에 크롤링 하는 프로그램을 간단하게 작성하여 올리신 것이 있어 이를 공유하고, 사용 방법을 알리고자 합니다.

 

 

 

GitHub - pgh268400/BaekJoon-Code-Extractor: 지금까지 제출한 백준 "맞았습니다" 코드를 추출하는 프로그램

지금까지 제출한 백준 "맞았습니다" 코드를 추출하는 프로그램 입니다. Contribute to pgh268400/BaekJoon-Code-Extractor development by creating an account on GitHub.

github.com

 

링크는 위와 같고, 들어가서 보면 설명이 자세히 되어 있지만 코드를 약간 수정해야 하는 부분도 있기에 설명을 추가하도록 하겠습니다.

 

 

 

먼저 링크 들어가서 오른쪽 상단에 Code 누르시고, Download ZIP으로 코드를 다운로드 받아주세요.

 

 

 

그러면 이렇게 BaekJoon Extractor 프로그램이 다운로드 될 것이고, 폴더를 들어가면 main.py가 있는 디렉터리가 있습니다.

처음에 프로그램을 돌렸는데 코드 추출이 제대로 안되고 txt 파일로만 추출이 되길래 코드를 뜯어보았는데, 수정해야 할 부분을 하나 발견했습니다.

따라서 main.py 프로그램을 메모장으로 열어서 한 군데만 수정해줍시다.

 

 

 

(저는 파이썬 편집기가 없어서 그냥 메모장으로 했습니다.)

프로그램을 여시면 언어에 따라 확장자를 다르게 하여 저장하도록 구현해두셨는데, 채점 언어의 경우 C++의 버전마다 이름이 다르게 설정되어 있습니다.

제가 이 글을 작성하는 시점에서는 C++의 경우 C++17로 채점이 되어있기 때문에, 위의 C++ 부분을 C++17로 수정해주었습니다. (이 글을 보는 시점에서 채점되는 언어가 C++17보다 높은 버전일 경우 해당 버전으로 수정해주시면 됩니다.)

또는 C++이 아니고 위의 if-else문에 없는 언어일 경우 해당 언어로 바꿔서 조건문을 추가해주시면 됩니다.

 

이제 main.py가 있는 폴더의 주소를 복사하여 cmd에서 "cd (주소)"로 이동하고, python main.py 또는 python3 main.py로 프로그램을 실행해주시면 됩니다.

(만약 python이나 기타 라이브러리가 설치되어있지 않으면 위의 깃허브 링크의 Readme 파일에 있는 내용대로 수행해주시면 됩니다.)

 

 

 

이제 Extractor를 돌려보면, 위와 같이 Problem Solve 폴더 안에 문제 번호를 파일명으로 하는 코드 파일이 생성됩니다. (저의 경우에는 천번대 자리를 기준으로 분류 작업을 한 번 더 했기 때문에 이 부분은 따로 해주시면 됩니다.)

코드의 경우 개발자분께서 가장 시간복잡도가 낮고 메모리가 낮은 코드로 추출한다고 하셨기 때문에 자신이 작성한 코드 중에서는 가장 잘 작성된 코드가 추출되었을 것입니다.

 

 

 

저의 경우에는 깃허브에 위와 같이 코드를 깔끔하게 정리해서 분류하여 올렸습니다.

Python 크롤링 기능은 정말 자동화에서 가장 유용한 분야인 것 같습니다.

 

추가로 질문이 있으시면 댓글 남겨주시면 제가 도와드릴 수 있도록 노력해보겠습니다.

 

 

 

반응형