BOJ 알고리즘 문제풀이 도구 solve.io 를 소개합니다

동동·2021년 8월 20일
3

여러분 안녕하세요.

곧 있으면 2021 하반기 채용시즌이네요. 여름의 무더위가 가시기도 전에 코딩테스트의 시간이 다가오고 있습니다.

저는 요즘 슬슬 알고리즘 공부를 하고 있는데요, 그 중에서 특히 백준 온라인 저지(BOJ) 를 이용해서 알고리즘 공부를 하고 있습니다.
(TMI: 이유는 바킹독 형님의 실전 알고리즘 강의에서 BOJ의 문제를 추천해주시기 때문에...)

알고리즘 문제를 풀 때 혹시 문제를 풀고 정답이면 그냥 넘어가시지는 않으신가요?

저는 한참 시간을 들여 낑낑대고 구글링을 해가며 겨우 문제를 푼 다음에 정답이면 기분이 일시적으로 좋아지고 그 다음 문제로 넘어가서 다시 고민하기를 반복하였습니다. 어느샌가 풀이한 문제수는 쌓여가는데, 알고리즘 풀이 능력이 향상된 것 같지는 않았습니다.

아 무조건 문제를 많이 푸는 것만이 능사는 아니구나. 한 문제를 풀더라도 여러 가지 방법을 시도하면서 즉, 리팩토링을 해보면서 나만의 풀이 방법을 만들어 가야겠구나 라는 생각이 들었습니다.

리팩토링을 할 때는 테스트 코드가 필수입니다

그런데 Programmers, LeetCode 에서는 문제의 입력/출력을 함수의 인자와 반환값을 사용하는 것에 비교해, BOJ에서는 문제의 입력/출력으로 Standard Input / Output을 이용하고 있습니다. 테스트 코드를 작성할 때 어떻게 해야 Standard I/O 의 문제 입력/출력을 다룰 수 있을까 고민 끝에 solve.io 라는 간단한 패키지를 만들었습니다.

solve.io 는 Standard I/O 로 주어지는 문제의 입력/출력을 함수의 인자와 반환값을 사용하게끔 바꿔주는 헬퍼함수를 제공합니다. 이를 통해 jest 와 같은 테스트 프레임워크에서 문제의 입력/출력을 제어하면서 테스트를 작성할 수 있게 해줍니다.

지금 0.0.2 버젼이고, 기능도 단일 기능 뿐입니다만 혹시나 BOJ로 문제를 푸시는 분들께 조금이나마 도움이 되셨으면 좋겠습니다. 사용하면서 추가하고 싶은 기능이나 문서화, 자동화 도구 등 있으면 이슈 및 PR 자유롭게 날려주세요. (나중에 이력서에 적을 사이드 프로젝트에 solve.io 를 기재할 수도?!)

참고 목적으로 solve.io를 사용하여 BOJ 문제를 풀고 있는 저의 알고리즘 문제 풀이 저장소도 같이 공유합니다.

solve.io github repository

BOJ 문제풀이 저장소 - boj-with-js

profile
작은 실패, 빠른 피드백, 다시 시도

0개의 댓글