[개발자매일영어] Cracking Coding Interview - 7 Steps to solve Algorithm Problems
이번에는 7 Steps to solve Algorithm Problems에 대한 내용 입니다.
개발자매일영어는 당분간은 Cracking Coding Interview의 저자로 유명한 Gayle Laakmann McDowell저자의 강좌를 지속적으로 공부해보도록 하겠습니다.
전체 분량은 너무 길어서 주요부분 한 두 군데만 1분 이하로 발췌하여 mp3파일로 만들고 있습니다.
즉 한 주제당 1분 이하 분량의 mp3파일이 한 두개씩 제공되겠습니다. 나머지 부분은 리스닝 연습 하시면 되겠습니다.
이번에는 따라하기 쉽도록 최대한 짧게 잘랐습니다.
공부하는 4단계 방법은 아래와 같습니다.
1분 이하 분량을 번역
전체 듣기 두번
문장 듣고 따라 말하기 두번
한국어로 듣고 영어로 말하기 한번 => 제일 중요 합니다!!!!
하루에 한시간 이상 들으면서 말하기 연습하면 좋을 것 같습니다.
*** 개발자 매일 영어는 제가 개인적으로 공부하기 위해 만든 mp3파일을 혹시 다른 분에게도 도움이 될까 해서 공유하고 있는 것입니다. 제 목소리도 포함되어 있고, 부족한 영어 실력으로 번역한 것이라 잘못되었을 수도 있습니다. 제 목소리에 놀라지 마시고 이상한 부분은 댓글로 알려 주시면 감사하겠습니다. ***
mp3 파일 다운로드: https://drive.google.com/open?id=1uVuis_T0HiXoYG0AhoyD3BFg-LDN-FVP
----- mp3 script -----
When it comes to variable names, yeah I know it's an annoying to write long variable names on a whiteboard but descriptive variable names are important to good style. So one compromise here is write the good descriptive variable name first and then just ask your interviewer, hey is it okay if I abbreviate this the next time.
So that'll be a nice little compromise - you'd show that you care about good variable names but you also don't waste a lot of time.
Last thing I want to talk about is modularization. Modularize your code up front and just any little conceptual chunks of code, push that off to another function.
So suppose you have three steps in your algorithm - process the first string, process the second string, and then compare the results.
Don't start writing these for loops that walk through each string in the very beginning.
Instead write this overall function that wraps these three steps. So step one, step two, step three, and then start drilling in and going into all the details there. Remember any conceptual chunks of code push those off to other functions, don't write them in line.
-- 번역 --
변수명들을 얘기할때 긴 변수명을 흰칠판에 쓰는 것이 귀찮다는걸 압니다만 상세한 변수명들은 좋은 코딩 스타일을 위해 중요합니다.
좋은 협상 방법은 먼저 상세한 변수명을 먼저 쓰고 그리고 면접관에게 다음부터는 축약된 변수명써도 좋겠냐고 그냥 물어보면 됩니다. 그건 좋은 작은 협상 방법입니다. 여러분은 좋은 변수명들에 대해 신경쓴다는 것을 보여주는 반면에 또한 많은 시간을 낭비하지 않을수 있습니다.
마지막으로 말하고 싶은 것은 모듈화입니다. 여러분의 코드를 모듈화하려면 먼저 그냥 어떤 작은 개념적 덩어리 코드들을 다른 함수로 분리하면 됩니다.
여러분의 알고리즘에 첫번째 문자열을 처리하고 두번째 문자열을 처리하고 그리고 결과들을 비교하는 3개의 단계가 있다고 합시다.
처음부터 각 문자열을 탐색하는 루프들을 작성하기 시작하면 안됩니다. 대신 이 세가지 단계들을 싸고있는 대략적인 함수를 작성합니다. 첫단계 두번째 단계 세번째 단계 그 다음에 깊게 파기 시작하면서 모든 상세한 것들로 들어갑니다. 기억하세요 즉시 코드를 작성하려고 하지 말고 어떤 개념적 코드 덩어리들을 먼저 함수들로 나누세요.