티스토리 뷰

알고리즘

알고리즘을 시작하며

임뒤 2018. 10. 23. 00:24

왜 알고리즘을 공부하는가?

나는 현재 27살이다.

현역으로 서강대학교 컴퓨터공학과에 입학하여 학점 2.85의 성적에 대학교를 졸업했다. 대학 공부를 솔직히 소홀히 했다. 친구들의 도움을 받아서 겨우겨우 시험을 봤다. 나는 개발자가 되고 싶은 마음이 없었다.

막상 졸업할 때가 되니 다른 친구들의 취업 소식을 보면서 초조해졌다. 그래도 개발자로 살아봐야겠다는 생각에 좋은 스타트업에 취직할 수 있었다. 그곳에서 안드로이드 개발을 배웠다. 잘 못했다. 그런데 정말 많이 배웠다.

처음 회사에서 '클린 코드' 책을 추천 받았다. 이 때까지 대학교에서 잘못된 방향성으로 코딩을 하고 있던 것을 깨달았다. 깃 사용법과 애자일 소프트웨어 개발 방식을 배우며 협업의 중요성과 프로젝트 다운 프로젝트를 진행해보았다.

사실 창업을 하고싶었기에 첫 직장을 퇴사하고 창업에 도전했다. 소규모 오프라인 코딩 교육을 하는 사업이었다. 사업은 순조롭게 잘 진행되었다. 그러나 결혼을 하고 싶었다. 여자친구와 7년을 넘게 사귀었고 여자친구는 대기업에서 근무하고 있었기에 나를 기다리는 중이었다.

같이 창업한 친구들에게 정말 미안하다. 그렇게 창업을 그만두고 이제 대기업에 취업을 준비한다. 솔직히 쉽게 갈 수 있다고 생각했다. 현재 15개 정도 기업에 지원했는데 모두 떨어졌다. 창업을 하면서 개발자 직무 뿐만 아니라 기획, 심사역, 콘텐츠 플래너 등 여러 직무로 지원했다. 될 때로 되라는 식이었다.

한 면접에서 궁금한 거 있으면 질문해보라고 하셔서 '저는 어떻게 될 것 같나요?'라고 물어봤다. 떨어질 것 같다고 하셔서 그 이유에 대해 물었다. 될 때로 되라는 식으로 하는 마음 가짐과 한 가지에 집중하지 못하시는 것 같다고 하셨다. 동의한다. 결심했다. 좋은 개발자가 되기로. 

이번에 구글에도 지원했다. 운 좋게 구글로부터 이메일을 받았다. 리크루터와 통화하게 됐다. 20분 정도 내 이야기를 들려주었다. 이야기는 괜찮게 흘러갔다. 그리고 리쿠르터가 말했다. '우리 회사는 알고리즘 인터뷰를 가장 중요하게 봅니다. 만약에 다음 인터뷰에 가셔서 떨어지면 1년간 지원이 어렵습니다.'

그러고는 8개의 알고리즘 관련 문제를 냈다. 4개를 틀렸다. 리쿠르터는 알고리즘을 더 공부하여 내년 초에 다시 지원해 볼 것을 권유했다. 나는 안도의 한숨을 쉬었다. 왜냐하면 나도 구글에서 요구하는 알고리즘 테스트의 수준을 이해하고 있었고, 나는 그 정도 수준에 못 미친다는 것을 잘 알았기 때문이다. 

대학교에 다닐 때 알고리즘의 최강 고수가 있었다. 그 친구를 보며 나는 저렇게 되지 못할것이라 생각했다. 그런데 솔직히 그 친구가 우리 학교에서 코딩을 제일 잘했다. 알고리즘과 코딩의 상관관계는 대체로 비례한다고 생각한다. 좋은 개발자라면 알고리즘은 기본기고, 모든 영역에서 기본이 튼튼한 사람은 오래가고 최고의 자리에 오를 수 있다고 생각한다.

'좋은 개발자, 구글의 인재 채용 기준'의 관점에서 알고리즘을 높은 수준까지 올리는 것은 불가피한 상황이다. 그래서 알고리즘을 공부한다.

어떻게 알고리즘을 공부할 것인가?

방법

  1. 백준 온라인 3-5개씩 풀어본다.
  2. 코딩 인터뷰 완전 분석 189제를 'HiredInTech'에서 제안한 방식으로 매일 1문제씩 풀어나간다.
  3. Data Structures and Algorithms in Python [Goodrich, Tamassia & Goldwasser]을 한 챕터씩 요약한다.
  4. MIT 알고리즘 강의를 듣는다.

목적

  • 백준온라인 : 흥미 + 생각을 코드로 옮기는 연습
  • 코딩 인터뷰 완전 분석 : 코딩 인터뷰 대비
  • Data Structures and Algorithms in Python : 이론적 지식 함양
  • MIT 알고리즘 강의 : 내가 놓치는 부분에 대한 보충 수업

선택 이유

백준 온라인은 위의 알고리즘을 엄청 잘한다는 그 친구가 엄청나게 문제를 많이 푼 사람이기 때문이다. 그 친구와 집 방향이 같았는데 지하철에서 같이 집에 갈 때면, 백준 온라인 문제를 보며 오곤 했다. 재밌게 알고리즘 문제를 풀 수 있어야 진정한 고수가 될 수 있지 않을까 생각한다.

코딩 인터뷰 완전 분석은 코딩 인터뷰를 준비하는데 있어서 바이블과 같은 책이므로 선정했다. HiredInTech는 어떻게 알게 되었는지는 모르겠는데, 코딩 인터뷰를 준비하면서 서치하다가 발견한 것 같다. 이 곳에서 제안하는 코딩 인터뷰 해결 흐름이 깔끔하고 논리적이기 때문에 한 문제, 한 문제 정성껏 풀어서 코딩 인터뷰에 대비하고자 한다.

이론적 지식을 쌓기 위해 본래는 Introduction to Algorithm 책으로 공부하려고 했으나, 아래의 참고 링크에 있는 coding-interview-university 레포지토리에서 그 책은 너무 헤비하다고 하였으므로 추천해주는 책인 Data Structures and Algorithms in Python으로 공부하려고 한다. 창업을 할 때 파이썬 기본기에 대해 다루어서 알고리즘 문제를 푸는 데 있어서는 파이썬이 편하기 때문에 파이썬을 선택했다.

MIT 강의는 텍스트, 실습으로만 공부하면 지루할 것 같아서 넣었다. 강의를 종종 보면서 혹시나 내가 놓치는 부분에 대해 캐치하고자 한다.

참고 링크

내가 구글 인터뷰를 풀 타임으로 8 개월 동안 공부한 이유(Why I studied full-time for 8 months for a Google interview)
이것은 사실이다. 나는 구글 소프트웨어 엔지니어 인터뷰를 준비하기 위해 수천 시간 동안 책을 읽고, 코드를 작성하고, 컴퓨터 공학 강의를 보았다. 만약 당신도 구글 인터뷰를 준비하고 싶다면, 이것이 내가 했던 ...
www.vobour.com
jwasham/coding-interview-university
A complete computer science study plan to become a software engineer. - jwasham/coding-interview-university
github.com
Baekjoon Online Judge
 
www.acmicpc.net
코딩 인터뷰 완전 분석
이 책의 저자는 구인 담당자가 아니라 소프트웨어 엔지니어다. 지원자로서도 면접관으로서도 코딩 면접을 겪어 본 적이 있기 때문에 지원자가 면접을 앞두고 무엇을 준비해야 하는지 잘 알고 있다. 수백 명의 소프트웨어 엔지니어를 가르치고 인터뷰해 온 결과물이 바로 이 책이다. 문제의 힌트와 숨겨진 부분을 발견하는 방법, 큰 문제를 다루기 쉽게 작게 쪼개는 법, 문제를 풀다 막혔을 때 막힌 부분을 풀어가는 기술, 컴퓨터 과학의 핵심 개념을 배운다. 189개의 면접 문제와 그 해법을 통해 연습할 수 있다. 이 책에는 면접에서 실제로 출시되었던 문제만 실었다. 최고의 회사들이 면접에서 하는 질문을 반영하여 실제 면접과 비슷하게 준비할 수 있을 것이다.
book.naver.com
Data Structures and Algorithms in Python
책으로 만나는 새로운 세상
book.naver.com
Introduction to Algorithm 강좌소개 : edwith
- 커넥트재단
www.edwith.org
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31