최고 엔지니어의 꿈을 향해서

알고리즘은 워낙 방대한 분야라서, 시간이 날때마다 조금씩 글을 올리도록 하겠다. 기본적으로 알고있어야 할 소팅, 서치 알고리즘부터 응용 알고리즘까지..다양하게 다뤄보도록 하겠다.

무엇보다 내가 생각하기엔, 테크닉적인 방법의 기억도 중요하지만, 기본이 되는 원리 이해부터 하는것이 중요하다고 생각한다.

알고리즘 영역에서 빠질 수 없는 기본적 컨셉들이 있는데 우선 Recursion에 대해 완벽히 이해 해야 할것이며, 그 다음으로 Divide and conquer, 깊이우선 탐색(DFS), Back tracking, Dynamic programming 등의 굵직한 개념 이해가 필요할 것이다. 이런 원리를 이해 한 후 텍스트 관련 알고리즘, 그래프 알고리즘, 프랙탈, 기하 관련 등등의 분야를 다루어 보면서 기본 알고리즘이 어떻게 응용되고 코딩되는지 하나하나 체득해 가는것이 중요하다.

물론 분야에 맞는 최적화된 알고리즘들은 대부분 인터넷에서 쉽게 찾아 활용할 수 있을것이다. 그러나 알고리즘을 직접 구현해 보고 연구해보면 기본적인 문제 해결력이 배양된다. 다양한 알고리즘을 구현해보다보면, (세일즈맨 문제, 가방채우기, nqueen문제 등등) 프로그래밍 실력도 향상될 뿐만 아니라, 새로운 문제에 직면했을때에도, 자세히 들여다보면, 기존 이미 알려진 문제와 흡사하다는 것을 깨닫고, 기존 학습한 방법으로 코딩을 할 수 있게 된다.

알고리즘을 너무 지루하게 생각하지 말고, 퍼즐 문제 푸는 것처럼 생각하면, 재미있어 진다. 알고리즘에 재미를 붙이기 위해 먼저 읽어 봐야 할 책들이 있다.

임백준 님이 지으신 씨리즈 모조리 다 읽어보면 좋다. 책이 너무 소설처럼 쓰여있어서, 정말 재밌다. 누워서 읽는 알고리즘부터 시작해서 요즘에 출간한 책들도 있을텐데 이름은 기억이 안난다.  책에서 다루어 지는 주제들이, 딱딱하지 않고 매우 이해하기 쉽고 재미있게 풀어 쓰셨다. 알고보니 인디애나 선배님 이셨다. 역시 ㅋㅋ

두번째는 생각하는 프로그래밍이다. 원제목은 Programming Pearls 2nd Edition 이고 존 벤틀리 형님께서 지으셨다. 실용적이면서 알아두면 좋을 만한 알고리즘을 다양한 분야에 걸쳐 소개 하고있다. 연습문제들도 있는데 다 풀수 있다면 진정한 geek으로 갈 수 있다. 공간과 속도의 반비례 관계를 잘 풀어서 설명하였다.

세번째는 한국에서 컴퓨터 공부하는 사람이라면 누구나 읽어본 C로 배우는 알고리즘 이재규 형님이 지으신 책이다. 자료구조 뿐만아니라 알고리즘에 대해 설명히 상당히 깔끔하고 잘 되어있다. 나도 지금까지 가장 많이 읽어본 책중에 하나인데, 공부 하면 할수록 이책 정말 잘 만들어 진 책같다.

네번째는 ACM 대비용으로 만들어진 Programming Challengers 라는 책이다. 문제 주고 코딩하라는 식으로 되어 있으며 해설지도 포함되어 있다. 이 문제를 하나하나 풀어보면, 정말 많은 도움이 되고 프로그래밍 신의 영역에 도달할 수 있다. 또한 카테고리별로 분류가 되어있어 나중에 쉽게 참조할 수도 있다.

이런책 외에도 다양한 명서들이 있지만 위에 책들은 부담없이 볼 수 있는 책들이라 소개하였다.

앞으로 하나하나 올려보도록 하겠다.


Posted by 정해권 Trackback 0 Comment 0


티스토리 툴바