개발자를 위한 알고리즘, 코딩테스트 질문 모음

Q&A 큐레이션

1. 백엔드 취업, 알고리즘 필수인가요?

현재 대학생입니다. 어떻게 기회가 생겨서 회사에 들어가 스프링부트로 개발해서 배포까지 했는데 알고리즘, 코딩테스트는 공부한 적이 없어서 잘 모르는데 공부 해놓는게 좋나요?


답변

안녕하세요! 넵. 코딩테스트는 대부분의 회사에서 요구하고 있습니다. 코딩테스트가 없고 과제 전형인 경우라도 면접에 들어가서 간단한 코딩테스트를 할 수도 있어요. 현재 취준/이직을 하고 계신거라면 코딩테스트 공부를 하는 걸 추천드립니다. 알고리즘이나 자료구조의 경우는 알고 있으면 도움이 될 때가 많아서 꼭 취준/이직이 아니더라도 시간날때 공부해두시면 좋은 것 같습니다 :)

이 질문 바로 가기

2. 알고리즘 문제 푸는데 간결한 코딩을 지향해야 하나요?

안녕하세요 최근에 처음으로 codewars에서 알고리즘 문제를 풀어보고 있습니다. 문제를 풀어보니 답은 맞긴하지만 다른 사람들의 코드를 보니 엄청나게 짧더라구요. 문제를 풀 때 코드를 최대한 짧게 하려고 노력해야 하나요? 나중에 코테를 본다면 결과만 확인하나요? 아니면 작성한 코드까지 평가가 되나요?


답변

안녕하세요! 제가 알기로는 단순히 점수만 확인하지는 않는 걸로 알고 있어요. 따라서 알고리즘 대회를 나가는 게 아니라, 기업의 코딩테스트를 준비하시는거면 코드의 가독성까지 염두에 두고 문제를 푸시는 게 좋습니다. (물론 어떻게든 정답을 맞추는 게 항상 최우선입니다.) 아시겠지만 코드의 가독성이란게 간결한 정도와 절대적으로 비례하지는 않을 것이니, 변수명이나 함수명은 역할에 대한 의미를 최대한 내포하고 있는게 좋을거에요. 글쎄.. 도움이 될 지는 모르겠지만, 아래 제 github 링크를 한 번 드려볼게요. algorithm 또는 data-structure 디렉토리를 타고 들어가시면 문제들이 나올거에요. 어떤 느낌인지만 살짝만 보고 나오시면 될 것 같습니다ㅎㅎ https://github.com/sekhyuni/computer-science/tree/main

외 6개 답변 보러 가기

3. 신입의 역량을 판단할때 알고리즘 vs 실무 지식

알고리즘과 실무 지식중 신입 역량에 어떤 지표가 더 중요한지 의견을 듣고 싶습니다. 제 경험상 기초 이상의 알고리즘을 풀 줄 안다면(leetcode easy 이상) 실무 지식이 많은 분들이 개발을 더 잘했던 것 같습니다. 기업마다 중요시하는 기준이 있겠지만 여러분들은 어떻게 생각하시나요?


답변

저는 둘 중에 실무 지식이 압도적으로 중요하다고 생각합니다. 알고리즘은 이 지원자가 문제해결능력을 얼만큼 가지고 있는지 최소 허들 정도로 사용되는 경우가 많습니다. 대기업이나 유명한 스타트업에는 지원자가 많아서 필터링을 더 많이 해야되기 때문에 알고리즘 문제가 어렵게 나오는 것이구요. 알고리즘은 딱 코테 합격할 정도만 하시고, 실무 지식을 기르는데 집중하시는 걸 권장드립니다.

외 5개 답변 보러 가기

4. “코딩”은 알겠는데, 이제 뭘 하죠?

대학교 2학년 재학중에 개발자 전문교육과정 학교에 선발되어 무지성으로 휴학하고 지금 1년 좀 넘게 다니고 있습니다. 프로그래밍 언어를 접한건 이번 과정이 처음이고, C / C++ 숙달, 그리고 파이썬 조금 다룰 줄 아는 상태입니다. 이쯤되면 복학이 무의미해지면서 취업에 올인하고 싶은 상황인데, 어떤 것을 준비해야 하는 지 감이 안잡힙니다. 교육과정에서 진행한 과제들로는 부족한게 뻔하고… 사이드 프로젝트? 코딩 테스트? 혼자서 앱 출시해보기? 뭐부터 시작하고 그게 어떤식으로 도움이 될지 조언해주시면 감사하겠습니다. 관심 분야도 막연하게 3d엔진/게임 개발 이정도만 잡혀있는 상태입니다.


답변

안녕하세요! 음, 공부하는 방식에 정답은 없지만 저라면 관심있는 분야에 대해 조금 더 깊게 찾아볼 것 같아요. 시작점으로는 가고 싶은 게임 회사를 찾아보는것도 좋은 방법인 것 같아요. 게임 개발도 여러가지 분야가 혼합되어 있어요. 그 회사 채용 공고를 찾아보고 어떤 기술을 요구하는지 하나씩 살펴보면서 천천히 공부하는 걸 추천드려요. 어느정도 분야가 정해졌다면 프로젝트를 해보면 될 것 같아요. 게임 개발이라면 유니티/언리얼 같은 엔진을 써서 게임을 만들어보는 것도 방법이고 직접 출시 해보는 것도 큰 도움이 될 것 같습니다. 서버 쪽에만 관심이 있다면 서버를 잘 만드는것도 좋은 것 같아요. 프로젝트를 진행하면서 막히는 문제들은 따로 정리를 잘 해놓고 어떤 점이 문제였고, 어떻게 해결했는지 잘 기록해놓는게 좋아요. 회사에서는 질문자님이 문제를 직면했을때 어떻게 접근하고 해결하는지를 보고 싶어해서 보통 면접을 볼때 이런 부분들을 많이 물어봐요. 그리고 아직 많은 회사들이 코딩 테스트를 요구하니까 알고리즘과 코딩 테스트 문제를 꾸준히 푸는 것도 중요해요. 이미 인터넷에 공개된 소스들은 많고 게임 개발자 로드맵 (준비 방법) 같은 것도 있습니다. 참고하시면 좋을 것 같아요 :) - https://github.com/utilForever/game-developer-roadmap

이 질문 바로 가기

5. 알고리즘 공부(코딩 테스트-프론트엔드)

안녕하세요 프론트엔드를 준비 중인 학생입니다. 현재 알고리즘 문제를 백준/프로그래머스/코드업에서 풀고있습니다. 그런데 알고리즘 유형이 워낙 다양하다보니 선택과 집중을 해야할 것 같은데 프론트엔드 코딩테스트를 위해서 어떤 알고리즘들을 중점적으로 해야할지 고민이 됩니다. 현직자분들의 귀한 조언 부탁드립니다.


답변

안녕하세요, 최근 퇴사 후 구직중이라 코딩테스트 문제들을 풀고있는 프론트엔드 개발자입니다. 프론트엔드라고해서 다른 문제를 내지는 않는것 같고 보통 공통된 알고리즘 문제를 풉니다. 리스트, linked list, hash map, dynamic programming, backtracking 등... 특히 주니어 레벨에서는 프론트에 한정된 도메인 지식을 요구하진 않기 때문에 실제 코딩실력을 보기위해 코딩테스트를 봅니다. 따라서 일반적인 알고리즘 코딩 문제 풀이를 연습하시면 됩니다 :) 저는 외국 사이트들 위주로 풀고 있는데 영어가 괜찮으시면 이쪽 사이트를 이용하는걸 추천드립니다. leetcode : easy 문제 위주로, upvote가 많은것 위주로 풀기 (구글 리쿠르터에게 추천받음) codesignal : 쉬운문제부터 차례로 풀도록 되어있음. leetcode와 달리 문제를 골라줘서 접근성이 더 좋음. 프로그래머스는 사용하는 회사들이 있어 괜찮은 것 같고, 백준은 정보올림피아드 등 개발자 코테보다는 알고리즘 문제풀이대회에 더 맞는것 같아 저는 사용하진 않습니다. 하지만 데이터 구조에 대한 지식이 없는 단계에는 추천드립니다.

이 질문 바로 가기

6. 프론트엔드 개발자 코딩테스트 준비

프론트엔드 개발자 분들은 이직 준비하실 때 코딩테스트 준비 어떻게 하시나요!? 어떤 언어로, 어떤 식으로 코딩테스트 준비하셨었나요!?


답변

❓ 프론트엔드 개발자는 이직할 때 코딩 테스트 준비를 어떻게 해야 할까요? 💡 제 대답을 요약하자면 다음과 같습니다. - 먼저 지원하고자 하는 회사의 코딩 테스트 유형을 확인합니다. - 과제 유형은 내가 작성한 모든 코드, 커밋, 환경 설정에서 질문이 들어올 수 있다는 생각으로 작성합니다. - 알고리즘은 자주 나오는 유형이 있으니 온라인 저지 플랫폼에서 문제를 반복적으로 풀어봅니다. - 언어는 JavaScript도 좋지만 개인적으로는 Python이 더 나았습니다. --- 지원하고 싶은 회사에서 어떤 유형의 코딩 테스트를 요구하는지를 살펴보는 것이 먼저입니다. 제 경험 상 코딩 테스트는 크게 알고리즘과 과제로 구분할 수 있는 것 같습니다. 과제 유형은 실무에 가까운 과제를 제한 시간 내에 풀어 제출하는 문제입니다. 이 경우에는 평소의 업무 경험을 잘 살려 만들되, 내가 작성한 모든 코드에서 질문이 들어올 수 있다는 생각으로 신중히 작성합니다. 코드 외적으로도 커밋 로그나 브랜치 관리, README.md 파일 작성에도 신경을 써줍니다. 요구사항 중에서 애매한 부분이 있다면 넘겨짚지 않고, 질문 메일을 보내서라도 확실히 짚고 넘어갑니다. 만약 시간이 남는다면 간단한 테스트 코드 등을 추가할 수도 있습니다. 알고리즘 유형은 제한 시간 내에 주어진 문제 상황을 해결할 수 있는 코드를 제출하는 것입니다. 다만 신입 채용이 아니라 이직일 경우에는 상대적으로 난이도나 중요도가 크진 않아보였습니다. 저 같은 경우 절반도 못 풀었는데 통과한 경험이 있습니다. 대신 그만큼 이력서와 포트폴리오를 더 많이 보는 듯 합니다. 따라서 알고리즘으로 나오는 문제의 유형은 많이 복잡하지 않습니다. 프론트엔드 쪽에서 개인적으로 추천드리고 싶은 유형은 아래와 같습니다. - 브루트포스, 그리디 - 분할 정복, 재귀 - 자료구조 - 이분 탐색 - 다이나믹 프로그래밍 알고리즘 언어는 사실 크게 상관이 없습니다. 저는 JavaScript와 Python을 둘 다 써봤는데, 둘 중에선 Python이 더 나았습니다. Python이 내장 라이브러리가 잘 되어 있고 문법이 더 간단해서 시간 내에 작성할 수 있는 코드 효율이 더 좋았기 때문입니다. 다만 일부 회사들의 경우에는 언어를 제한하는 곳도 있으니 참고해야 합니다. 알고리즘 문제를 풀 수 있는 플랫폼은 국내/국외에 다양한 온라인 저지 사이트들(백준, 프로그래머스, CodeForce, LeetCode, TestDome, ...)이 있으니 직접 들어가서 몸에 맞는 걸 선택해야 합니다. 만약 경험이 전혀 없으시다면 프로그래머스를 추천드립니다. 국내 사이트이고, 난이도와 유형 별로 구분이 비교적 잘 되어 있기 때문입니다. 알고리즘의 공부 효과를 보려면 다소 시간이 필요합니다. 문제를 풀 수 있는 방식이 여러 개이거나, 회사마다 어떤 문제가 어떻게 나올지 모르기 때문에 유형 별 공부를 반복적으로 해야 하기 때문입니다. 기초가 전혀 없다면 매일 1~2문제씩 푸는 것 기준으로 최소 3개월 이상 걸릴 것이라 예상해봅니다. 저는 코딩 테스트 통과율이 유의미해지기까지 약 6개월 정도가 걸렸습니다. 마침 제가 몇 달 전에 작성해둔 알고리즘 관련 글, 프론트엔드 개발자에게도 알고리즘 공부가 중요할까?(https://wormwlrm.github.io/2022/05/28/Should-a-front-end-developer-learn-the-algorithm.html)가 있으니 한 번 읽어보시는 것을 추천드립니다.

외 1개 답변 보러 가기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

지금 가입하면 모든 질문의 답변을 볼 수 있어요!