코딩테스트 준비 플랫폼 비교(백준, 프로그래머스, 해커랭크)

imloopy·2022년 12월 13일
8

Today I Learned

목록 보기
54/56

📌 단순히 여러 플랫폼을 이용하면서 느꼈던 점들을 적은 것이며, 틀린 내용 또는 다른 분들과 다른 의견이 있을 수 있습니다.

취미 삼아(?) 알고리즘 문제 푸는 것을 좋아한다. 주로 백준과 프로그래머스 플랫폼을 이용하여 알고리즘 문제를 풀었으나, 최근에는 인터뷰 준비도 할 겸 hackerrank라는 해외 플랫폼을 통해 준비하고 있다. 알고리즘을 공부하는 사람들에게 이 글이 어느정도 도움이 되면 좋겠다. 알고리즘 실력이 뛰어나다는 것은 절대 아니니, 오해하지 말았으면 좋겠다

또한, 이 글은 기업용 코딩 테스트 또는 코딩 인터뷰를 준비하는 사람들에게 도움이 될 수 있으며, 알고리즘 대회를 준비하거나, 취미 삼아서 다양한 알고리즘 문제들을 해결하는 사람들에게는 도움이 되지 않는다.

백준 온라인 저지(BOJ)

Baekjoon Online Judge

처음 알고리즘 문제를 풀어본다면, 아마 가장 먼저 접하게 될 가능성이 높은 플랫폼이다. 그 만큼 국내에서 가장 유명하고 문제 수도 많은 플랫폼이다. 또한, 계속해서 새로운 문제들이 추가되고 있다.

만약 처음 알고리즘에 대해 접한다면, 단계별로 풀어보기를 통해 감을 익혀가는 것이 좋을 것이라고 생각한다. 38단계까지 모든 유형에 대해 접했다면, 코딩 테스트에서 나올 수 있는 모든 유형에 대해서 접해보았다고 생각해도 무방하다. 잘 푼다는 것과는 별개다.

장점

(아마도) 국내에서 문제수가 가장 많다.

현재 날짜 기준 채점 가능한 문제는 23840 문제이다. 문제의 퀄리티를 떠나서 문제 양은 압도적이며, 특히 코딩테스트에 필요한 유형들은 그 비중이 훨씬 크기 때문에 문제를 해결하면서 부족할 일은 없을 것이라고 생각한다.

커뮤니케이션이 잘 되어있다. 문제 별로 질문 게시판이 있다.

문제를 풀다가 막힌다면 질문 글을 통해 힌트를 얻을 수 있다. 해결한 사람 또는 시도한 사람의 숫자가 많은 문제일 수록 도움 받기가 쉽다.

solved.ac 익스텐션 - 백준 플랫폼의 강력한 무기

solved.ac

익스텐션이 잘 되어 있다. solved.ac 홈페이지를 통해 내가 푼 문제의 유형을 볼 수 있으며, 어느 부분이 취약한지 확인이 가능하다. 또한, 유형, 난이도 별로 문제를 확인하여 해결할 수 있으며, 문제를 풀면서 나의 등급을 확인할 수 있다. 이는 동기부여로 작용할 수 있다.

새싹 문제들도 있으며 처음 접하는 사람들에게 도움이 될 수 있다.

https://user-images.githubusercontent.com/56826914/207235884-f5cf22e5-15ef-41cd-8a7d-7c110099b949.png

나의 등급을 확인하는 것에도 도움이 된다.

https://user-images.githubusercontent.com/56826914/207236099-fe6374a7-54f7-43ae-be3a-db83a2941434.png

어떤 유형을 풀었는지 한눈에 볼 수도 있다.

https://user-images.githubusercontent.com/56826914/207236324-ea4611b8-b1cf-42f4-a4e1-9aa34ee99977.png

대부분 알고리즘에서 유명하신 분들이 여기서 활동하는 것을 볼 수 있다.

또한, 이분들이 만든 여러 문제들을 해결해 볼 수도 있다.(나동빈님, 바킹독님 등등)

삼성 코딩테스트를 준비하는데 용이하다. 삼성 코딩테스트 전용 문제집이 존재한다.

삼성 SW 역량 테스트 기출 문제

내 코드를 누가 참고했는지 볼 수 있다. 이 또한 소소한 재미이다.

https://user-images.githubusercontent.com/56826914/207237062-91b9701e-8507-4b1d-85c4-3e08459621b2.png

유형별로 취약한 부분을 찾아서 해결할 수 있다.

  • 예를 들어, 다이나믹 프로그래밍 분야가 취약하다면, 해당 부분을 찾아서 집중적으로 문제를 해결할 수 있다.

제한 시간, 제한 메모리가 명시되어 있어, 문제를 푸는 사람들이 사전에 뻘짓을 하지 않아도 된다.

단점

문제 번호가 곧 난이도를 의미하지는 않는다.

문제 번호 순서대로 푼다면, 이 문제에 막혀 좌절하게 될 가능성이 높다.

난이도로 별로 문제를 풀기가 어렵다.

solved.ac 플랫폼이 나오면서 많이 해결되었다. 다만, 백준 홈페이지만으로 난이도 별로 문제를 푸는 것은 어렵다.

검증되지 않은 문제가 많을 수 있다.

개인적으로 해결한 수가 500명 이하인 문제들은 잘 찾아서 풀지 않는다.

코딩테스트에 걸맞는 문제를 찾기 위해 시간을 쏟아야 한다.

예를 들어, 누군가가 코딩테스트에 적합한 문제들을 모아두었거나, 만든 문제집을 통해 해당 문제에 접근하는 방법 말고는 이 문제가 코딩테스트에 적합한 유형인지 확인하기 어렵다.

프로그래머스

코딩테스트 연습 | 프로그래머스 스쿨

프로그래머스는 교육 플랫폼이다. 개발자와 기업들을 위해 다양한 테스트 환경을 제공하고, 인터뷰를 준비할 수 있는 교육 자료들을 제공한다.

장점

카카오 유형을 풀어보는데 적합.

프로그래머스 플랫폼의 존재 의의라고 생각한다. 카카오 코딩테스트는 프로그래머스 플랫폼을 통해 진행되기 때문에, 모든 카카오 문제들은 프로그래머스에서만 해결이 가능하다.

카카오 문제 세트가 엄청 많다. 2018년부터 풀어보면, 해마다 난이도가 상승하고 있다는 것이 체감된다. 이것이 바로 상향평준화.

https://user-images.githubusercontent.com/56826914/207239758-0c7c04fa-6a71-40fe-8083-2766df996a8b.png

쉬운 제출 방식

백준 온라인 저지는 stdin, stdout 방식을 통해 문제를 제출하는 방식이라면, 프로그래머스는 solution()이라는 함수 내부에 코드를 작성하여 값을 반환하면 테스트를 진행하는 방식이다.

https://user-images.githubusercontent.com/56826914/207239967-966f279c-07e7-4f4c-af39-f27b420c8e4f.png

물론 프로그래머스가 쉬운거지 백준이 어렵다는 뜻은 아니다.

  • 레벨 별로 나누어져 있어, 단계별로 도장깨기가 가능하다.
  • 레벨별 뿐만 아니라 유형별로도 나누어져있어 취약 유형 풀기에 적합한다.
  • 코딩테스트에 나올 법한 유형들에서 크게 벗어나지 않아, 무엇을 풀어도 코딩테스트 준비에 도움이 된다.
  • 월코챌, 가끔 진행하는 주간 코딩 챌린지들도 문제를 해결하는데 도움이 많이 된다.

단점

문제 수가 적다. 이전에는 지금보다 훨씬 적었다. 요즘은 그래도 많아지긴 했지만, 그래도 타 플랫폼에 비하면 문제 수가 많은 것은 아니다.

뒤죽박죽 난이도 프로그래머스 플랫폼에 대해서 가장 아쉽다고 생각하는 점

난이도 별로 나누어져 있는데, 문제 또는 알고리즘 문제를 푸는 유저 수준이 상향됨에 따라 같은 난이도에서 이전 문제들과 최근에 만들어진 문제들간 난이도 차이가 너무 크다.

빛의 경로 사이클 - 레벨 2
빛의 경로 사이클

최댓값과 최솟값 - 레벨 2
최댓값과 최솟값

위의 두 문제는 실제로 같은 레벨 2에 위치해 있는 문제이다. 물론 레벨 내에서도 본인이 잘 하는 부분이 있고 잘 못하는 부분이 있기 때문에 체감 난이도에 차이가 있긴 하지만, 그래도 최댓값과 최솟값문제는 레벨 1에 위치해도 될 만한 문제라고 생각한다.
물론 이 또한 문제를 푸는 사람들의 상향평준화로 인해 발생한 문제라고 생각한다.

프로그래머스는 이 부분에 대해 수정할 필요가 있다고 생각한다.

상대적으로 빈약한 커뮤니티

  • 질문 글들을 보면 스포일러가 너무 많다. 난 힌트를 얻으러 온 거지, 정답을 보러 온 것은 아닌데..
  • 문제를 푼 다음 다른 사람의 해결법을 볼 때 다소 한 눈에 들어오지 않는다. 무조건 인기순으로만 볼 수 있다는 것도 단점이라고 생각한다.

해커랭크

Dashboard | HackerRank

장점

라이브 코딩 인터뷰를 준비하기에 적합한 플랫폼이라고 생각

현재 풀어본 1 week preparation kit 기준으로 적자면, 굉장히 기본적인 유형들로 구성되어 있다. 그러나 모든 라인에 대해 왜 그런지 생각하면서 해결한다면 결코 쉽지 않다.

또한, 문제를 푸는 방식을 기존의 종이에 수도 코드를 작성하고 이를 바탕으로 문제를 해결하는 방식에서, 라이브코딩 처럼 주석을 통해 내 로직을 간단히 구성하고, 이를 발전시켜서 로직을 완성하는 방식으로 훈련할 수 있다는 것이 이 플랫폼의 가장 큰 장점이라고 생각한다.

항상 기본이 가장 중요하다는 것을 일깨워 준 플랫폼 중 하나다.

Mock test

Mock test는 시간 제한이 있기 때문에, 실제 코딩 인터뷰처럼 생각하는데 굉장한 도움을 준다.

문제의 유형

  • 1 week preparation kit, 1 month preparation kit 등 코딩 인터뷰를 위한 문제 세트들이 있으며, 3개의 연습 문제와 1개의 mock test로 구성되어 있다.

실제 라이브 코딩과 비슷한 환경으로 연습하면, 이 플랫폼의 가치를 더 많이 활용할 수 있다.

높은 커뮤니티 활성도

문제별로 커뮤니티가 활성화 되어 있어 모르는 문제에 대한 discussion이 가능하다.

단점

영어의 압박

  • 문제의 난이도보다, 영어 자체가 이해가 되지 않아서 문제를 이해하는데 시간이 오래 걸리는 경우도 많았다.
  • discussion을보면 나 뿐만 아니라 많은 사람들이 나처럼 생각하는 것 같다.

국내 참고 자료가 많이 없다

모르는 문제에 대한 답을 찾으려고 하더라도 결국에는 영어의 압박이 기다리고 있다.

결론

더 많은 플랫폼들이 있지만(leetcode, swexpertacademy), 사용경험이 거의 없어서 적지 않았다.

세 플랫폼은 장단점이 명확한 플랫폼이기 때문에, 본인의 상황에 맞게 선택하는 것이 중요하다. 만약 삼성 관련 코딩 테스트를 봐야 한다면, 백준 플랫폼이 가장 좋을 것이고, 카카오 코딩 테스트를 봐야 한다면, 프로그래머스 플랫폼만이 유일한 해답이 될 수 있다. 또한 라이브 코딩 또는 코딩 인터뷰를 볼 때는 해커랭크가 좋은 해답이 될 수 있다.

또한, 결국에는 어차피 다 풀어보게 되기 때문에, 이에 대해서 걱정할 필요는 없다. 어느정도 한 플랫폼에서 문제를 해결하게 되면, 다른 유형이 궁금해지기 때문에 다른 플랫폼을 기웃거리게 될 수 밖에 없다. 적어도 나의 경우에는 그랬다.

마지막으로, 어떤 플랫폼에서 문제를 해결하던 간에, 항상 에 대해서 끊임없이 나에게 질문하는 것이 중요하다. 문제의 정답을 맞추는 것은 중요하지만, 적어도 인터뷰에서는 접근 방법 또한 문제를 맞추는 것만큼 중요하다(대학 시험에서도 과정 없이 답만 쓰면 0점인 것처럼 말이다).

나의 실력에 맞는 문제를 찾고, 그 문제를 반복 숙달하는 것이 어려운 문제를 푸는 것 보다 중요하다고 생각한다.

출처

1개의 댓글

comment-user-thumbnail
2023년 3월 25일

덕분에 좋은 내용 잘 보고 갑니다.
정말 감사합니다.

답글 달기