Leetcode & Computational Thinking

스탯 안에서도 바이오쪽 애플리케이션을 하다보니 python보다 R을 더 자주쓰는 뒤쳐진 인간이 되어버렸다 ㅠㅠ 파이똔을 연습하기 위해 Leetcode의 algorithm연습문제들을 Easy레벨부터 하나씩 깨고 있는데, 몇가지느낀점


1. 인터뷰에서 이런 문제들을 물어본다면, 이 사람의 지능이나 skill을 measure한다기보다, 인터뷰를 얼마나 열심히 준비했는지, in other words 성실성을 measure 하게 된다고 생각한다. 테크에서 일 구하는 사람중에 릿코드 모르는사람 없을거고, 다같이 같은 resource로 준비하는 과정에서, 그냥 누가 더 많은 패턴의 문제를 보고 방법을 익혔느냐 밖에 되지않아서..  마치 IQ테스트 같은 대기업 인적성 검사도 학원다니면서 연습하면 더 잘보게 되는 느낌이랄까.. 그렇다면 정말 이런 문제를 인터뷰에서 물어보는게 사람을 걸러내는데 정말 효과가 있는걸까 ㅡㅡ 회사입장에서는 재능있는 사람을 놓치는것보다 (type 2 error) 그럴싸해보이지만 스킬없는 인간을 hire하는 것 (type 1 error) 에 대한 risk가 훨씬 더 클텐데, 이런 면접 문제들이야말로 fraud에게 먹잇감을 던져주는것 같단말이지. 진짜 일 열심히 하는 사람은 본인 업무 / 리서치에 신경쓰지 누가 이런 중학교 수학경시같은 문제들에 시간을 쓰겠냐고.. (리서치 미루고 릿코드 하면서 놀고있는 내얘기)


2. 그럼에도 불구하고 중딩 수학경시 문제들은 재밌다! 사실 몇개는 재밌고 몇개는 재미없다. 얼마나 컴퓨터처럼 생각하냐 - 같은 pure algorithmic문제들은 재미없고, 가끔 나오는 mathematical trick을 쓸수있는 문제는 재밌다.  example) [2,4,5,0,1] 처럼 0부터 n까지의 integer중 하나만 빠진 벡터에서 어떤 숫자가 빠졌는지 알아내라! 라는 문젠데, sorting / searching algorithm 쓰는게 정석이겠지만 trick은 0부터 n까지 sum에서 주어진 벡터의 sum을 빼버리는거다. 인간이 컴퓨터보다 나아지는 순간 같아서 이런 문제를 깨면 기분이 좋음

3. 처음에 python배울때 와닿지 않아서 몇번 욕했었던 기억이 난다. R은 기본적으로 loop을 지양한다. for loop쓰기전에 두세번 생각하라고, vectorize는 기본이라고 그렇게 배웠는데 python에서만 뭐만하면 룹이래. 처음엔 counterintuitive 했었는데  몇번 해보니 이게 왜 더 빠른지 조금은 알 것 같기도 하다. 똑똑한 인간들이 괜히 쓰는게 아니다


4. 고개를 돌렸더니 눈이 바닥에서 하늘로 올라오고 있다. 밖에 나가기 싫엉 흑흑
암울한 시카고








Comments