코딩테스트

리트코드, 백준 그리고 프로그래머스의 차이. 코딩테스트 연습 사이트를 비교해보면?

RyanKwon 2021. 10. 6. 20:40
728x90

항상 이 주제로 글을 쓰고 싶었는데 드디어 쓴다.

우선 개발을 해야 하는 직군에서 일을 하고 싶은 사람이라면 코딩테스트가 뭔지 알거고, 코딩테스트 라는것에 대해서 준비를 해볼까-라고 한번이라도 생각해본 사람이라면 위 사이트 세개를 들어봣을 것 같다. 적어도 저 세개 중 한개는 들어봤을 거고, 여기에서 더 나아가면 삼성sw아카데미까지 들어봤을 것 같다. 위 세개의 웹사이트는 모두 코딩테스트를 준비중인 사람을 위한 웹사이트이지만 조금씩 차이가 있다. 나는 각각의 웹사이트에서 적어도 몇십문제씩은 풀어봤고, 그렇게 위 웹사이트들을 활용해서 코딩테스트 공부를 하면서 느낀 점을 오늘 공유해볼려고 한다.

우선 세 웹사이트의 공통점에 대해서 먼저 말을 하겠다. 공통점?.. 코딩테스트 공부하는 웹사이트라는점. 나머진 다 다르다.

————————

일단 한국에서 가장 유명하고 가장 많이 알려진 백준에 대해서 내가 느낀 특징은,
1. 문제가 많다.
2. 사용자가 많다.
3. 프로그래밍 에디터를 따로 사용해야 한다.
4. 인풋 데이터를 input()함수를 사용해서 직접 입력받는 형식으로 해야한다.
5. 문제의 티어가 정말 다양하게 세분화돼있다.
6. 본인의 티어를 통해 성취도를 확인할 수 있다.

대충 이정도인데, 문제가 많다는 점은 당연히 장점이지만 약간은 단점이기도 하다. 장점인 이유는, 문제가 많으면 공부를 하는 사람 입장에서 공부할 거리가 많으면 당연히 좋은거니까. 단점인 이유는 이 중에 대체 뭘 풀어야할지 모르겠다는 점 때문이다. 문제가 많으면 사실 실제 회사 코딩테스트에 나오지 않을 법한..걸 요구하는 문제도 분명히 있을 수밖에 없기 때문에 다소 효율적으로 공부하기가 힘들다. 물론 출처별이나 사람들이 직접 만든걸로 추정되는 문제집별로 문제를 풀 수가 있고 그렇게 하면 조금 더 낫지만 사실 그렇게 되면 문제가 많다는 점이 장점..인가? 싶게 되니까.
사용자가 많다는 점도 장점이면서 단점이다. 장점인 이유는 내가 풀지 못하는 풀이가 있을 때 구글링을 해서 다른 사람 풀이를 쉽게 찾아볼수 있다는 점 때문이다. 다만 단점으로 가끔 느껴지는 이유는... 백준이 워낙 유명하다보니 일부 코딩학원에서 백준 문제들을 가지고 가르치는 건가?하는 느낌을 받은 적이 몇번 있 다. 왜냐면 가끔은 다른 사람 풀이를 보고싶어서 해설을 구글링하면 정말.. 꽤 많은 사람들이 놀라울 정도로 세세한 구현까지 똑같은 모습으로 코딩한 경우를 볼 수 있다. 물론 모든 문제가 이런건 아니지만 일부 문제에서는 내가 원하는 조금 다른 아이디어의 풀이가 아니라 획일화된 풀이만 볼 수 있었어서 조금 아쉽다.
프로그래밍 에디터를 따로 사용해야 하는 점은, 인터페이스 내에서 코드를 출력해볼 수가 없어서 확실히 불편한 부분이다. 사이에 프린트 기능을 활용할 수가 없으면 사실 전혀 디버깅을 할 수가 없다는 얘기라서.. 프로그래머스나 리트코드에 비해서는 다소 아쉬운 부분이다. 티어로 문제 등급을 나눠두거나 사람들이 문제를 풀면 그 점수로 스스로의 티어를 올릴 수 있게 한 부분은 성취감을 느낄 수 있어서 좋다. 이 외에도 문제를 풀고나면 숏코딩이나 다른사람들이 푼 풀이를 꽤 자유롭게 볼 수 있어서 공부하는데에 확실히 도움이 많이 된다. 하나 단점을 추가하고싶은게 있는데, 백준은 답을 ‘출력’하는 형태로 답안이 맞았나 체크를 하는데 가끔 이 부분에서 오류가 나곤 해서 날 곤란하게 한 경우가 있다.

————————————

그 다음으로, 프로그래머스에 대해서 내가 느낀 점은,
1. 유명한 문제들이 많다. 특히 카카오
2. 이런 저런 문제들에 대한 카테고리 분류가 잘 돼있다.
3. 인터페이스 내에서 사이 값을 출력해볼 수 있다.
4. 인풋 함수는 신경쓰지 않아도 된다.
5. 문제 레벨이 총 5개로 나뉘어 있다.

한국에 코딩테스트 채용 바람을 불어온 카카오가 프로그래머스를 통해 코딩테스트를 진행한다. 그리고 그런 것 때문인지 카카오 문제는 프로그래머스에서 확인해 볼 수 있고 또 풀어볼 수도 있다. 이건 정말 좋다. 이 외에도 2번에 내가 서술했는데 문제들에 대한 카테고리 분류가 잘 돼있다. 가령 스택/큐/트리 등등으로 문제 카테고리들이 잘 나뉘어있고 내가 봤을 때 실제로 문제가 해당 카테고리와 잘 맞는 경우가 많았다. 이게 백준이랑 다른점이다. 백준 또한 문제 카테고리들이 있지만 뭐랄까 막상 풀어보면 이게 이 카테고리라고? 싶은 경우도 퍽 있었다. 이게 프로그래머스는 문제가 엄청 많은게 아니라서 가능한 부분이긴 하다. 문제가 많아지면 아무래도 정확히 딱 하나의 카테고리에 맞는 문제를 많이 만들긴 힘드니까. 아무튼 고득점 키트도 있고, 확실히 효율적으로 공부하기엔 프로그래머스가 좋은 부분이 있다. 그리고 프로그래머스는 솔루션 함수를 완성하고 리턴값으로 답을 내면 되는 시스템이라서 인풋 받는 부분을 굳이 고민하지 않아도 된다. 그리고 답을 리턴하면 되기때문에 출력 방식때문에 답이 틀리는 일은 없어서 그 부분도 좋다.

————————————

그 다음으로 리트코드에 대해서도 간략하게 설명하면,
1. 영어로 된 웹사이트임
2. 문제가 정말 많다.
3. 사용자가 글로벌하고 또 엄청나게 많음.

그냥 이정도..? 일단 영어로 된 웹사이트라서 해외 취업을 준비하는 사람들한테는 좋다. 그런 문제 유형에 익숙해질 수 있을테니까. 그리고 글로벌한 웹사이트이다보니 문제도 정말정말 많고 사용자도 엄청나게 많다. 이건 백준이랑 비슷한 특징이라서, 백준의 장단점을 그대로 갖고있다. 문제가 많으니 많이 풀고싶다면 원없이 풀 수 있지만 중요한 문제/ 효율적으로 공부에 도움이 되는 문제를 거르는 과정이 필요하다. 그리고 사용자가 많다보니 좋은 아이디어로 짠 완벽한 구현의 좋은 풀이도 많은데 매번 그..코드의 해설을 영어로 봐야하는 점은 부담으로 다가오긴 한다. 한국인 사용자가 별로 없다보니 내가 지금 푼 문제를 한국인 개발자 중 코딩테스트 연습문제를 푸는 사람 중 블로그를 하는 사람이 있을 가능성이 별로 없고 한국인이 푼 해설을 보기가 힘들다. 이 외에 리트코드의 좋은 점은 내가 푼 풀이의 속도/메모리 사용량을 알려주고(이건 프로그래머스/백준도 동일) 그게 전체 제출된 답안들 중 상위 몇퍼센트의 속도/메모리인지를 알려준다는 점이다. 조금 더 효율적으로 해볼 수 있을까 연습한다면 분명히 도움이 되는 부분이다.


간단히 얘기하면, 백준은 문제가 많고 다른 사람들의 풀이를 많이 보고 싶을 때 좋다. 프로그래머스는 중요한 유형의 잘 만들어진 문제만 골라서 풀고 싶을 때 좋고 리트코드는 해외 취업용 + 속도/메모리를 이것저것 시험해보고 싶을 때 좋다. 이건 취향차이이긴 하지만.ㅋ

처음에 내가 샀던 책인 파이썬 알고리즘 인터뷰 영향을 받아서 나도 리트코드로 시작을 했는데 지금은 프로그래머스/백준을 훨씬 애용한다. 프로그래머스는 문제 질 자체가 좋아서 풀기가 좋고 백준은 사용자가 많아서 자료가 그냥 많아서 좋다. 추려진 문제집이든 해설이든 남의 답이든 뭐든 많다.

728x90