[개발자매일영어] 3 Algorithm Strategies - Cracking Coding Interview

in #algorithm7 years ago (edited)

이번에는 3 Algorithm Strategies에 대한 내용 입니다.

개발자매일영어는 당분간은 Cracking Coding Interview의 저자로 유명한 Gayle Laakmann McDowell저자의 강좌를 지속적으로 공부해보도록 하겠습니다.
전체 분량은 너무 길어서 주요부분 한 두 군데만 1분 이하로 발췌하여 mp3파일로 만들고 있습니다.
즉 한 주제당 1분 이하 분량의 mp3파일이 한 두개씩 제공되겠습니다. 나머지 부분은 리스닝 연습 하시면 되겠습니다.
이번에는 따라하기 쉽도록 최대한 짧게 잘랐습니다.

공부하는 4단계 방법은 아래와 같습니다.

1분 이하 분량을 번역
전체 듣기 두번
문장 듣고 따라 말하기 두번
한국어로 듣고 영어로 말하기 한번 => 제일 중요 합니다!!!!
하루에 한시간 이상 들으면서 말하기 연습하면 좋을 것 같습니다.

*** 개발자 매일 영어는 제가 개인적으로 공부하기 위해 만든 mp3파일을 혹시 다른 분에게도 도움이 될까 해서 공유하고 있는 것입니다. 제 목소리도 포함되어 있고, 부족한 영어 실력으로 번역한 것이라 잘못되었을 수도 있습니다. 제 목소리에 놀라지 마시고 이상한 부분은 댓글로 알려 주시면 감사하겠습니다. ***

mp3 파일 다운로드: https://drive.google.com/open?id=1p0Jt0DoktoZqV9UPrVHJczPgGLNzX_mh

----- mp3 script -----
Whatever you're doing your algorithm is probably somewhere between s
squared times b and maybe even as fast as O of b and this happens for a lot of
problems, there's a lot of problems where people's algorithm is really really
complex or really really slow or they just get completely stuck, but given an
actual example, the way that your brain will just intuitively find the right
output is actually often a pretty good algorithm. So part of why I push so much to
come up with a really big example and making sure it's, you know, really generic
and doesn't have special cases in it, is that if you put yourself in position
where your brain has to do work, you might be able to just have an
algorithm just flow out very naturally from that. So make your examples large and
let your brain do its thing, get the output manually, however you want to do
it and then try to reverse-engineer that thought process and figure out what
exactly did your brain actually do to get that result.
So those are the three techniques I use all the time for solving problems. BUD is
bottlenecks, unnecessary work and duplicated work, space/time trade-off so a lot of that means hash tables, and then do it yourself, really rely on examples and
these we use for a huge variety of problems and can really help you make a
lot of progress on otherwise difficult problems.
-- 번역 --
당신의 알고리듬을 사용할때 마다 아마도 s b제곱과 빨라봤자 O b 사이에 있을 것입니다. 이것은 많은 문제들에서 볼 수 있습니다. 사람들의 알고리듬에는 엄청 복잡하거나 정말 느리다거나 또는 완전히 막히는등 많은 문제들이 있습니다. 그러나 실제 예제가 주어지면 당신의 뇌는 직관적으로 옳은 결과를 찾고 그것은 실제로 종종 꽤 좋은 알고리듬입니다. 그래서 제가 큰 예제를 만들어보라고 많이 얘기했고 이것은 정말 일반적이고 특별한 것들이 아닙니다. 여러분의 뇌가 작동할 수 있는 상황을 만들면, 아주 자연스럽게 그것으로 부터 알고리듬을 만들어 낼 수 있을 것입니다. 큰 예제들을 만들고 여러분의 뇌가 결과를 수동적으로 가져오도록 하세요. 그것을 하고 싶으면 사고과정을 Reverse-engineer해서 여러분의 뇌가 그 결과를 얻기 위해 실제로 무었을 하였는지 알아내야 합니다.
이것들이 제가 문제들을 풀때 늘 사용하는 3가지 기법입니다. BUD는 병목들, 필요없는일 및 중복작업들, 공간과 시간의 교환 등, 대부분은 해쉬테이블들을 의미합니다. 그리고 직접 해보고 정말 예제들을 활용하고 엄청난 여러가지 문제들에 사용해보면 정말 도움이 되고 난해한 문제 외에는 많은 진보가 있을 것입니다.