알고리즘을 공부하기 싫어서 테스트 코드를 짜기로 했다.
알고리즘을 공부하기 싫어서 테스트 코드를 짜기로 했다.
직접 짜는 알고리즘 테스트 케이스
이런건 계획에 없었는데..
난 항상 의문을 가지고 있던 부분이 동일한 시간이 주어졌을때 알고리즘을 공부하는 것과 프로젝트를 진행하는 것 중에 뭐가 더 나은 방식인가 였다.
나는 당근빠따 프로젝트지! 파였는데
친구들과 주변에 물어보니 자기는 백준 플레티넘이니 골드니 삼성소프트웨어 아카데미에서 골드문제는 5분컷내는 사람이 수두룩 했다더니 대기업 취업하려면 알고리즘 문제가 필수다 하는 얘기를 전해듣다보니
어.. 나.. 나도 알고리즘 풀어야하나…
라는 마음한켠의 걱정을 안고 친구들중에선 당근빠따 프로젝트 파의 수장으로써 살고있었다.
그러다 이번에 핵클팀에 커피챗하러 쫄래쫄래 간적이 있었는데 거기서 “알고리즘을 공부하는게 대기업 취업확률상 알고리즘을 공부한게 더 높지 않을까요?” 라고 말해주셨다.
한번은 알고리즘 문제 풀어봐야겠다고 마음을 다잡았다.
근데도 그냥 알고리즘이 하기 싫었다. 뭔가 도움이 안된다고 생각하니 몸에서 알러지반응이 일어나는 느낌
그래서 알고리즘만 하는게 아니고 다른 이펙트를 더 낼수있는 방식이 없을까 고민했다.
그정돈 되야지 나를 설득할 수 있을것 같기 때문이었다.
리트코드
한국에서는 백준이 유명했는데 백준은 뭔가 마음에 안들었다.
왜냐면 백준은 알고리즘만 이펙트를 낼수있는 구조였기 때문이다.
그러다 은근히 괜찮은 알고리즘 사이트를 찾았는데 리트코드이다.
장점
일단 내가 스페인에서 인턴쉽을 했기때문에 링크드인으로 네트워크가 조금 있었는데
이 링크드인과 깃헙에 연동이 되는 프로필을 만들수있고 내가 푼 알고리즘 문제의 유형이 태그별로 정리가 되었다.
사이트 자체가 가독성이 좋고 사이트맵을 잘만들어서 그냥 누르다보면 다 됐다.
링크드인은 문제가 영어로 되어있어 알고리즘문제를 풀면서 컴퓨터분야의 영어단어랑 익숙해질 수도 있었다.
장점 중 제일 인상깊은 부분은 내 랭킹과 리트코드만의 잔디기능을 제공해준다는 점이다.
내가 알고리즘 푸는 것만 딱 구분되게 잔디가 심기고 리트코드가 글로벌 사이트다보니 알고리즘 글로벌 랭킹이 뜨는것도 뭔가 의욕을 북돋아주었다.
부족해
하지만 이 정도로도 부족했다.
알고리즘을 풀면서 영어 익숙 + 잔디? 부족해 부족해
어떻게하면 알고리즘을 푸는데 약간의 수고로움을 추가하고 더큰 이펙트를 낼 수 있을까?
알고리즘의 검증은 보통 알고리즘을 제공해주는 사이트에서 테스트 케이스를 솔루션에 맞추어 돌려서 해당 문제의 패스 & 논패스를 결정한다.
그리고 사이트에서 문제의 예시 케이스를 주는데
어어..? 이거..
인풋을 선언하고 아우풋을 assert… 한다면 테스트케이스를 모킹할 수 있겠는걸
그래서 나는 알고리즘을 푸는 Gradle 프로젝트를 깃헙에 만들고 Junit을 디펜던시에 추가하여 내가 직접 테스트 코드를 만들면서 알고리즘을 풀기로 했다.
테스트 케이스를 만들다보면 뭔가 테스트 마다 비슷한 부분을 찾게되고 작은 코드로 테스트 갯수를 늘리는 식의 기능추가도 시도해볼 수 있겠다는 생각이 들었다.
대기업에서 유연한 기능 확장과 배포 자동화를 위해 테스트 케이스를 쓰는게 필수라고 하니까
그걸 위한 연습도 되겠다 싶었다.
충분해..!
라고 생각했다. 하지만 막상 짜다보니 예상하지 못한 테스트상황이 나왔다.
아니 외부 api가 있다고 가정하고 그냥 함수 부르면 불러지는게 어딨음..
그래서 테스트 하면서 겪은 고민(고난)을 정리하면 블로그를 더 꾸밀수 있다는 생각이 들었다.
이제 알고리즘 문제를 풀면
- 깃헙에 문제풀이로 잔디 심어지고
- 테스트 코드를 작성을 체화하고
- 리트코드 잔디 심어지고
- 리트코드는 링크드인을 통해서 확인할 수 있고
- 블로그 글을 쓸 수 있다.
충분해..?
라고 생각하던게 엊그제였는데..
내가 바보같이 더 쉬운 걸 하나 놓치고 있었다는걸 오늘 강의에서 멍때리다가 눈치챘다.
알고리즘 문제랑 문제 풀이 코드 + 문제 풀이 코드 깃헙링크를 블로그에 추가적으로 올려도 괜찮아 보였다.
이제 알고리즘 문제를 풀면
- 깃헙에 문제풀이로 잔디 심어지고
- 테스트 코드를 작성을 체화하고
- 리트코드 잔디 심어지고
- 리트코드는 링크드인을 통해서 확인할 수 있고
- 알고리즘 문제에 대한 고민 블로그를 쓸 수 있다.
- 알고리즘 풀이에 대한 블로그 포스팅을 할 수 있다.
이정도는 되어야 알고리즘 문제 풀지 ㅎㅎ
이렇게 취업하기 전까지 최대한 진행 해봐야겠다.
정리
프로젝트를 하는게 더 성장에 도움된다고 생각하지만 대기업 취업이 목표라면 확률상 알고리즘 문제를 푸는게 더 좋고 어차피 알고리즘 풀거면 더 큰 이펙트를 내기위해 리트코드를 이용해 내 풀이를 기록하고 그 공부를 링크드인에 자료로 제출하며 깃헙 잔디도 심고 블로그 글도 2개씩 써야겠다.
헿헤헤헤