여러분 안녕하세요.
곧 있으면 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 문제를 풀고 있는 저의 알고리즘 문제 풀이 저장소도 같이 공유합니다.