자료구조&알고리즘 공부방법(?)과 서적좀 추천해주세요

philossh의 이미지

보통 자료구조를 먼저 공부하고 알고리즘을 공부하라는데..
기초 알고리즘 책(C로배우는 알고리즘같은..)을 보면 자료구조를 따로 공부를 안해도 될것도 같은데..
어떤식으로 공부를해야할지..
어떤 책일 좋을지..
추천좀 해주세요..

ssif의 이미지

대학생이신가요?c언어로 된 것인가요?

어느책을 보아도 크게 다를것 없어보입니다.
그러나 제가 추천하는 책은

1.한빛미디어:c로 구현한 알고리즘
2.새출판사:c로 배우는 알고리즘

두가지 입니다.
또는 도서관에 있는 조금 오래된 내용의 책들도 괜찬습니다.
다만 얼마나 끈질기게 의자와 씨름을 하느냐가 관건입니다. :D
c99로 기술된 책은 아직 국내서(번역서 포함)에서는 못보았습니다.

님의 건승을 빌겠습니다.

봄들판에서다

newfrog의 이미지

1. 학교수업을 충실히 듣습니다.
소스를 보면서 자료구조와 알고리즘을 이해하면 자기것으로 소화하기가 힘듭니다. 이론을 통해서 개념(?)이 정립이 되어야 하는 것 같습니다.

2. 문제를 풀어봅니다.
올림피아드나, 각종 로직훈련용 프로그램(동호회나 인터넷에 많음)을 많이 짜봅니다.

3. 쉬운 알고리즘과 자료구조를 응용해서 기본적인 프로그램을 개선시켜봅니다.
예) 주소록
자료구조를 배열->링크드리스트->선형배열->String->C++로 업글 등등

p.s. 코드를 정확하게 못 짜도 pseudo code를 대충 그릴 수 있을만큼 알고리즘과 자료구조를 이해하시는 게 중요한 듯...

I'm a dreamer.
:-) Do everything with all my passion.

오호라의 이미지

philossh wrote:
보통 자료구조를 먼저 공부하고 알고리즘을 공부하라는데..
기초 알고리즘 책(C로배우는 알고리즘같은..)을 보면 자료구조를 따로 공부를 안해도 될것도 같은데..

[Data Sturture]와 [Algorithms]...

국내 번역서 및 국내서 중에서 알고리즘이라고 써 있는건...

제 개인적인 생각으로는 대부분 [Data Sturure]기반의 알고리즘책들입니다.

[C로 배우는 알고리즘, 이재규]책같은 경우는 입문용으로 매우 적합합니다. 이유는 몇가지 있습니다. 번역서가 아니라서 내용이 조잡함이 별로 없고, 내용이 쉽게 설명되어 있고, 풀소스를 제공합니다. 많은 부분을 그림으로 설명되어 있습니다.

이에 반해서 [C로 구현한 자료구조, 이석호 - <http://www.nist.gov/dads/>에서도 참고문헌으로 되어있음. (Ellis Horowitz and Sartaj Sahni, Fundamentals of Data Structures, Computer Science Press, 1983)]같은 경우는 자료구조에 대한 기본적인 지식이 없는 사람이거나 컴퓨터사이언스 관련 서적을 별로 접해보지 않은 사람들에게는 오히려 난해할수 있습니다. 책이 안좋아서 일수는 거의 없습니다. 어느 정도 어려운 책입니다.

추천하는 국내서로는 자료구조 책은 위의 2권. 알고리즘은 [알고리즘 - 도경구],[C++/알고리즘 - 장직현], [프로그래밍 챌린저], [정보올림피아드 기출문제]만 봐도 무난할듯합니다.
비추천 책들은 공저가 많은 책들 - 대부분 어떤 대학교수님들이 자체적으로 쓸려면 내놓 책들, 타 책에 비해서 얇은 책 - 부실할 소지가 다분, 제목이 그럴싸한 책들, ~~ JAVA - 자바를 하실줄 알면 모를까, 개인적으로는 C로 되어 있는 책이 더 난해하기 때문에 처음부터 C로 된것을 보는 것이...

나머지 책들은 전부 고만고만하거나 추천한 책에서 빠진 부분만 찾아봐도 무리가 없을듯 합니다.

방법은 이런걸 깨우치면 됩니다.

보통 자료구조책에 이런 내용이 꼭 나옵니다. 술취한 바퀴벌레, 미로찾기, 공학용 계산기..., 큐을 이용한 스케쥴링...

미로찾기를 예로 들면, 미로찾기는 스택[자료구조]을 기반으로 백트래킹[알고리즘]을 이용했다. 이런 결론을 내릴수 있을 정도만 되어도 성공입니다. ^^

PS. 자각이 필요합니다. 남이 추천해주거나, 주위에서 괜찮다고 하는 책들이 있다는 걸 듣는건 별로 바람직하지 못합니다.(물론 전부 볼수는 없습니다. ^^;) 정말 새로 나온 책들이 아니라면 그 책들은 수많은 책들중에서 본인이 찾아내는 능력과 노력이 필요합니다. 괜찮은 책들만 찾아보면 시간과 고생이 많이 줄어들겠지만, 가끔은 그 괜찮지 않은 책들에서도 진흙속에 진주를 몇개 가지고 있는 책들도 있습니다.

추천해달라는 것도 좋지만, 우선은 대형서점, 학교도서관, 주위도서관을 찾아가서 직접 책에 부딪혀 보세요. 그리고, 결정하세요. ^^

Hello World.

익명 사용자의 이미지

개인적인 느낌으로는, 데이터구조는 수학적인 기반보다는 컴퓨터의 구조나 프로그래밍 언어에 대한 지식이 더 도움이 되는데 비해, 알고리즘 쪽은 이산수학에 더 무게가 실리는 듯 합니다.

알고리즘에 대해 추천하는 책이라면
McGraw Hill, Introduction to Algorithms, Second Edition
http://mitpress.mit.edu/algorithms/
알고리즘에 대해 정말 제대로 접근하고 있는데다가, 어둠의 경로에서 pdf로 구하기도 쉽습니다 ㅋㅋㅋ

[C로 배우는 알고리즘, 이재규] 같은 경우는 본격적으로 이론을 공부하는 책이라기 보다는 그냥 알고리즘 실용사전 정도의 의미가 강합니다. 이론 공부 필요없이 필요한 알고리즘 찾아쓰기 좋은 구조라고나 할까요?

그리고 기왕이면 최신 외국 원서 보시길 바랍니다. 최근 나오는 책들은 내용 자체도 최근의 C++이나 JAVA, OOP등에 맞춰서 쓰여진 경우가 많습니다. (물론 그래봤자 어차피 이바닥의 기본은 pseudo 코드이긴 하지만)

htna의 이미지

오호라 wrote:
추천하는 국내서로는 자료구조 책은 위의 2권. 알고리즘은 [알고리즘 - 도경구],[C++/알고리즘 - 장직현], [프로그래밍 챌린저], [정보올림피아드 기출문제]만 봐도 무난할듯합니다.

도교수님과는 어떤 관계이신지...
도교수님의 명언이 있었죠... 아시려나..
'for 맴돌이'
한편으로는 실소를 자아내기도 했지만, 그 교수님의 깊은 한글사랑이 엿보이는 말입니다.

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

오호라의 이미지

htna wrote:
도교수님과는 어떤 관계이신지...
도교수님의 명언이 있었죠... 아시려나..
'for 맴돌이'
한편으로는 실소를 자아내기도 했지만, 그 교수님의 깊은 한글사랑이 엿보이는 말입니다.

아하하. 님에 점하는 찍는 관계입니다. 하하. ^^;

그렇지 않아도 요즘 도교수님의 성함을 자주 보게 되는군요.

Compiler, PL에 관심이 있는지라...

어찌어찌 하다보니...

[SIGPL]도 알게 되고,

어찌어찌 하다보니...

ML에 알게 되었는데...

최근 발표되 모 정적 바운딩 분석기 이광근교수님도...

같은 문파인것도 알게되고...

어찌어찌 하다보니...

세상이 참 좁그려...

^^;

Hello World.

tasy의 이미지

도교수님 번역하신 책이 원서가 좋은 책이기도 하고 도교수님은 여타의(대학원생 알바시키는) 교수님들과 다르게 직접하시기 때문에(퇴근을 언제하시는지 모르겠습니다..) 그만큼 좋은책이 된 것이 아닐까 생각합니다.

수업들으면서도 참 부처님(^^;)같은 분이다 생각은 했었는데 말이죠.

하여간 저도 [알고리즘 - 도경구] 이책 추천합니다 3판까지 나왔을 겁니다. 그리고 Introduction to Algorithms은 최고의 책이죠. 다만 분량이 조금 많고 번역서도 없고 문제가 어렵기 때문에 보는데 시간은 좀 걸리지 않을까 생각 되므로 전자를 먼저 보시면 좋을 것 같습니다.

그리고 김창준(juneaftn)씨가 쓰신 글 역시 많은 도움이 되는 글 임으로 참고 하시면 좋을 것 같습니다.

---------
Byeongweon Moon
http://tasy.jaram.org/blog
사랑하면 알게 되고 알면 보이나니 그때에 보이는 것은 전과 같지 않으리라.

오호라의 이미지

tasy wrote:
도교수님 번역하신 책이 원서가 좋은 책이기도 하고 도교수님은 여타의(대학원생 알바시키는) 교수님들과 다르게 직접하시기 때문에(퇴근을 언제하시는지 모르겠습니다..) 그만큼 좋은책이 된 것이 아닐까 생각합니다.

혹시 [SIGPL] 여름학교 참가해 보셨나요?!~ 이번 여름에 참가해볼까 하는데...학부생이라서...내공이 부족하지 않을까 걱정입니다. ^^;

정말 가슴아픈 현실입니다. 국내대학의 현실이겠죠.

제일 중요한건 대학교수님들께서 직접 집필하신 책과 그렇지 않은 책은 정말 차이가 많다는거죠.

DS, PL, OS, DB와 같은 핵심적인 분야에서 바이블로 통하는 번역서들.

어떤 책들은 그 책을 보기 위해서 동종의 책이 한권 더 필요한 책들도 있죠.

1세대교수님들은 이미 글렀고...

2, 3세대교수님들의 화이팅을 빌뿐입니다...

Hello World.

서지훈의 이미지

"Foundamental of Data Structures in C"
이 책도 괜찮더군요.
대학교때 교재로 사용하든 놈인데...
번역서도 별다른 어려움 없이 볼만 합니다.

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

cinsk의 이미지

알고리즘, 자료 구조를 명확히 구분하여 자료 구조를 배우기 좋은 책을 추천하기는 힘듭니다. 그 대신 두 가지를 모두 다루는 책들은 많습니다.

한가지 주의하실 것은, 알고리즘/자료 구조를 다루는 책은 프로그래밍 언어를 다루는 책이 아니라는 점입니다. 즉, 알고리즘/자료 구조를 다루는 책에서 쓰는 코드 예제는 좋지 않은 coding style을 쓰는 경우도 많습니다만, 책의 목적 자체가 알고리즘/자료 구조를 다루는 것이기 때문에 큰 단점이 되지 않습니다.

Fundamental of Data Structure in C도 그러한 관점에서 보면 그리 나쁜 책은 아닙니다만 이 글을 한 번 읽어 보시기 바랍니다.

손님이 추천하신 "Introduction to Algorithms"도 매우 좋은 알고리즘 책입니다. http://mitpress.mit.edu/algorithms/ 자료 구조를 전혀 모르시는 분은 약간 어려움이 있을 수 있지만, 이재규님의 "C로 배우는 알고리즘"에 나온 내용을 알고 계신 분이라면 큰 어려움이 없습니다.

그리고 좀 더 어렵게 설명하지만, 어디가서 알고리즘에 대해 논할 때 전혀 빠지지 않는 책은, 오호라님의 아바타로 쓰이는 책, "The Art Of Computer Programming"입니다. 현재 Volumn 3까지 나와 있고, Particle이란 이름으로 Volumn 1 update와, Volumn 4의 첫 부분이 별도로 나와 있는 상태입니다. http://www-cs-faculty.stanford.edu/~knuth/taocp.html

http://www.cinsk.org/books/

지금은 교육 중이라.. ^^; 퇴근 후 좀 더 자세한 정보를 올리겠습니다.

서지훈의 이미지

cinsk wrote:
알고리즘, 자료 구조를 명확히 구분하여 자료 구조를 배우기 좋은 책을 추천하기는 힘듭니다. 그 대신 두 가지를 모두 다루는 책들은 많습니다.

한가지 주의하실 것은, 알고리즘/자료 구조를 다루는 책은 프로그래밍 언어를 다루는 책이 아니라는 점입니다. 즉, 알고리즘/자료 구조를 다루는 책에서 쓰는 코드 예제는 좋지 않은 coding style을 쓰는 경우도 많습니다만, 책의 목적 자체가 알고리즘/자료 구조를 다루는 것이기 때문에 큰 단점이 되지 않습니다.

Fundamental of Data Structure in C도 그러한 관점에서 보면 그리 나쁜 책은 아닙니다만 이 글을 한 번 읽어 보시기 바랍니다.

손님이 추천하신 "Introduction to Algorithms"도 매우 좋은 알고리즘 책입니다. http://mitpress.mit.edu/algorithms/ 자료 구조를 전혀 모르시는 분은 약간 어려움이 있을 수 있지만, 이재규님의 "C로 배우는 알고리즘"에 나온 내용을 알고 계신 분이라면 큰 어려움이 없습니다.

그리고 좀 더 어렵게 설명하지만, 어디가서 알고리즘에 대해 논할 때 전혀 빠지지 않는 책은, 오호라님의 아바타로 쓰이는 책, "The Art Of Computer Programming"입니다. 현재 Volumn 3까지 나와 있고, Particle이란 이름으로 Volumn 1 update와, Volumn 4의 첫 부분이 별도로 나와 있는 상태입니다. http://www-cs-faculty.stanford.edu/~knuth/taocp.html

http://www.cinsk.org/books/

지금은 교육 중이라.. ^^; 퇴근 후 좀 더 자세한 정보를 올리겠습니다.


근데... "The Art of Computer Programming"은 단기간에 보기는 아주 힘들죠.
그냥 보통 1~2년 길게 잡고 보셔야 할듯 ㅡㅡㅋ
아님 참고서적으로 가지고 계시면 도움이 될듯 합니다.
저도 이 책을 대학원 2년동안 넉넉히 생각하면서 볼려 했으나 사정상 대학원을 업어 버렸기 때문에 별로 보지도 못 했습니다.

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

philossh의 이미지

음..
일단은 이재규님의 C로 배우는 알고리즘 1,2 권을 구입했습니다.
우선 이책으로 공부한후..
여러 님들께서 추천해주신 책들을 봐야겠군요..
원서를 보고싶은 마음은 굴뚝같은데..
이노무 영어가 걸리니.. :cry:

To be or not to be.
That is the question.

kihongss의 이미지

ssif wrote:
대학생이신가요?c언어로 된 것인가요?

어느책을 보아도 크게 다를것 없어보입니다.
그러나 제가 추천하는 책은

1.한빛미디어:c로 구현한 알고리즘
2.새출판사:c로 배우는 알고리즘

두가지 입니다.
또는 도서관에 있는 조금 오래된 내용의 책들도 괜찬습니다.
다만 얼마나 끈질기게 의자와 씨름을 하느냐가 관건입니다. :D
c99로 기술된 책은 아직 국내서(번역서 포함)에서는 못보았습니다.

님의 건승을 빌겠습니다.

근래에 C Primer Plus 4판을 볼일이 생겼는데,
C99의 내용이 많더군요. 번역서도 절차 판매중 :D

tky7068의 이미지

참고되었습니다. 감사합니다. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.