취업을 위한 자료구조&알고리즘 공부하기

Mingyu Jeon·2020년 3월 28일
6

앞으로 쭉 올릴 글들은 제가 공부하면서 스스로 정리하고자 적는 글입니다.
다소 내용이 부족할 수 있으나, 저와 같은 처지에 놓인 개발자들에게 조금이나마 도움이 됐으면 좋겠습니다.

소개

저는 미국 스타트업에서 Fullstack Engineer로 근무 중이다가 현재 새로운 기회를 잡고자, 취업을 준비하고 있습니다.
비록 computer science가 전공이지만, 학부시절 개발에 흥미를 갖지 못했고, 수업 공부 대신 사업을 했었기 때문에 전공자로써 깊이가 매우 얕습니다. 졸업 또한 스타트업 창업 및 특허출원으로 졸업 논문을 대체할 수 있었습니다.

제가 한국에 있을 당시에는 딱히 알고리즘 공부를 할 필요가 없었습니다. 이 때문에 저는 알고리즘 수업을 딱히 듣지 않았습니다. 실무와 연관이 떨어진다고 생각했거든요. (지금은 매우 후회하고 있습니다만...)

각설하고, 본론으로 들어가보겠습니다.
처음에 알고리즘 문제풀이 하려고 문제풀이 사이트를 접속하면 머리가 하얘지실겁니다.
(제 경우엔 leetcode를 봅니다.)
걱정마세요. 정상입니다! 그래서 일단 공부 순서를 알려드리려고 합니다.

1. 언어를 정하자

먼저 자신이 앞으로 사용할 언어를 정하세요. 혹은 문제풀이에 특화된 언어를 선택하셔도 됩니다. (예를 들어, 파이썬) 제 경우에는 파이썬입니다. 알고리즘 문제 풀 때 파이썬이 문제 풀기 좋더라구요.

2. 개념을 철저히

자료구조와 기본 알고리즘 개념이 체화되지 않았다면 문제를 풀 수 있을리 없습니다. 설령 풀더라도 효율적인 방법은 아닐 겁니다. (코드 길이, 실행속도 등등)
따라서, 이 자료구조는 무엇이며, 어떤 때 쓰는 것이 좋고, 왜 써야하는가 등등을 알아야 합니다.

3. 기본 자료구조 구현하기

자료구조를 익혔다면 이제 그 자료구조도 구현할 수 있어야겠죠?
알고리즘 문제는 스택, 큐, 트리, 그래프 등등을 활용하여 문제를 풀게 되는데, 리버스를 시킨다던가 회전을 시키는 등 다양한 방법으로 접근을 시키는데 이를 위해서는 재귀함수를 사용한다던가 포인터를 활용한다던가 하는데, 이렇게 기본적인 자료구조를 구현할 수 있고 이를 자유자재로 다룰 수 있어야합니다. 자유자재로 다룰 수 있으면 문제 풀이가 굉장히 수월해져요.

4. 쉬운 난이도 먼저 정복하기

알고리즘 문제를 출제할 때 대부분 중급 이상 난이도의 문제를 출제합니다. 제 주변 개발자들에게 물어도 초급 난이도의 문제는 본 적이 없다고 하네요. 하지만 우리는 아직 초보니까 괜히 중급 난이도의 문제부터 풀다가 멘탈 깨지지말고 초급부터 푸는 것이 좋습니다. 일단 자신감도 생기고, 이 초급 난이도의 문제가 발전되서 중급 난이도의 문제가 되기 때문에 일단은 초급 문제를 잘 푸는 것이 좋습니다.

문제 풀때의 Tip이 있는데 항상 이 부분을 노트나 어느 한 구석에 적고 풀이하실 것을 권합니다.

  • 문제 정의하기
  • Input/Output 정의하기
  • 본인 solution의 Time complexity(시간복잡도) 계산하기

애플 개발자 왈, "여러 회사를 인터뷰 봤는데, 모든 회사에서 시간복잡도를 질문한다"고 합니다. 이 시간복잡도를 계산할 수 있으셔야 합니다. 아주 재미없고 별로 중요한 것 같지도 않고 대충 아니까 그냥 넘어가기도 하는데 이 부분을 확실히 하셔야됩니다. (제 자신에게도 하는 말)
공간 복잡도를 묻는 회사도 간혹가다가 있는데 거의 물어보지 않고 시간복잡도를 많이 묻는다고 하네요.

5. 대망의 중급 문제 풀기

일단 제 목표는 중급 난이도 문제 300개를 푸는건데요. (고급 문제는 쳐다도 안볼 예정)
미국에서는 300 rule이 있어요 300문제를 풀면 비로소 인터뷰를 볼 자격이 생긴다네요.
300문제 정도 풀면 어느 정도 문제 풀이를 할 수 있는 능력이 생긴다는 뜻이겠죠.
얼마 전 제 지인이 Apple과 Google에 들어갔는데, 인터뷰어가 문제를 출제하면 듣자마자
이미 머릿 속에 문제 접근 방식이 떠올라야 한다고 합니다.
실제로 인터뷰 시간은 1시간인데 ice breaking이라고 간단한 대화하는데 15분, 문제 풀이 30분, Q&A 15분 이런 식으로 구성이 된다고 하네요. 생각보다 문제 풀이 시간이 많이 부족하니 문제를 보자마자 답이 반사적으로 나올 정도로 연습을 해야할 것 같습니다.

지금까지 제가 공유드린 내용들은 제가 취업 준비 전까지는 알지 못했던 내용들이고, 미국 대기업에 들어간 지인들의 꿀팁들입니다.
다음에는 제가 공부하면서 깨달은 부분 혹은 꿀팁들을 써보도록 하겠습니다.

0개의 댓글