개발자가 반드시 알아야하는 알고리즘과 데이터 구조는 무엇입니까? [닫은]


24

성공적인 엔터프라이즈 Java 개발자가되고 싶습니다. 어떤 알고리즘과 데이터 구조에 정통해야합니까? 나에게 어떤 책을 추천 하시겠습니까?

성공적인 Java 개발자가 되려면 CLRS에 제공된 것과 같은 모든 고급 알고리즘을 알아야 합니까?

우선 순위의 내림차순으로 학습해야 할 주제 목록을 제안 할 수 있습니까?

내가 알아야 할 것 :

  • 수색?
  • 정렬?
  • 그래프 / 나무?

기타?


1
@ jonsca : 제휴 마케팅 아? ;)
Chankey Pathak

아, 음, SE는 링크를 그렇게 변경하지만 모든 사람들이 이니셜을 알고있는 것은 아니라고 생각했습니다. :)
jonsca

답변:


17

알고리즘 에 대한 Cormen의 소개 는 몇 가지 기본 이론적 기초를위한 좋은 책입니다.

즉, 대부분의 알고리즘과 데이터 구조는 이미 다른 사람들에 의해 코딩, 테스트 및 최적화되었으므로 다시 구현할 이유가 없습니다. 성공적인 Java 개발자가 되려면 Collections Framework 를 알아야 합니다.


3
그러나 알고리즘과 관련된 비용을 알아야합니다. 예를 들어 광범위한 검색은 잠재적으로 많은 공간을 사용하면서 가장 짧은 경로를 찾습니다.
Frank Shearar

큰 O 표기법의 정신을 얻는 것은 먼 길을 갔지만 동의했습니다.
Joonas Pulakka

8

어떤 종류의 프로그래머라도 되려면 모든 기본 데이터 구조 (스택, 큐, 배열, 링크 된 목록, 해시 테이블, 트리 등)를 자세하게 이해해야합니다. 컬렉션 프레임 워크가없는 세상에서 자신을 위해 일한다면 자신을 위해 구현할 수있을 만큼은 충분합니다.

알고리즘과 관련하여 데이터 구조는 기본 빌딩 블록 인 반면, 작업을위한 더 많은 도구 인 것 같습니다. 나는 당신이 실행할 수있는 모든 알고리즘을 구현하는 방법에 대한 세부 사항을 아는 것이 중요하다고 생각하지 않습니다. 당신이 할 수있는 것은 주어진 목적을 위해 알고리즘이 얼마나 잘 작동하는지 평가하는 것입니다. 깊이 우선 검색과 너비 우선 검색 또는 데이터에서 수행하는 정렬 유형의 차이로 인해 코드의 성능이나 일반적인 성공에 큰 차이가 생길 수 있으므로이를 판단하는 방법을 아는 것이 중요합니다.


0

다른 답변 외에도 알고리즘 연구는 잘 알려진 기술 (아직 중요한)에 대한 지식뿐만 아니라 고안에 이르는 사고 과정에 대해 이해할 수 있다고 덧붙이고 싶습니다. 실생활에서 발생하는 문제에 대한 해결책으로 반드시 잘 알려진 것은 아닙니다.


0

나는 지금 하루에 Java를 배우고 있습니다.

성공적인 엔터프라이즈 개발자가되고 싶습니다. 그렇다면 어떤 알고리즘과 데이터 구조에 정통해야합니까? 어떤 책을 추천 하시겠습니까?

성공적인 Java 개발자가 되려면 CLRS에 제공된 것과 같은 모든 고급 알고리즘을 알아야합니까?

우선 순위의 내림차순으로 배워야 할 주제 목록을 제안 해 주시겠습니까?

알아야 할 몇 가지 주제의 이름을 알려주십시오. 검색, 정렬, 그래프, 트리 등?

프로그래밍 기술을 확장하고 향상시키기를 열망하는 것이 좋습니다. 그러나 알고리즘을 암기 할 항목의 카탈로그로 취급하지 않는 것이 중요합니다. 좋은 개발자가되기 위해 알아야 할 것은 (자바 나 다른 문제에서) 알고리즘 분석을 이해하는 것입니다.

선택한 몇 가지 데이터 구조와 알고리즘 배우고 시간과 공간 (메모리) 측면에서 성능을 분석하는 방법을 배웁니다. 검색, 정렬, 그래프, 트리, 힙, 스택 및 모든 좋은 것들. 이것은 또한 계산 및 이산 수학의 몇 가지 기본 이론을 따라야합니다 (자바 영역에서는 실제로이 두 주제를 직접 사용할 수는 없지만 이점은 간접적입니다).

알고리즘 분석 학습 (알고리즘 및 데이터 구조의 "암기"와는 다름)으로 프로그래밍 언어 학습 (자바 Java의 경우)을 분리하십시오.

George T. Heineman, Gary Pollice 및 Stanley Selkow의 "간단한 알고리즘" 은 좋은 출발입니다. Sanjoy Dasgupta, Christos Papadimitriou 및 Umesh Vazirani의 "알고리즘"은 훌륭한 저학년 교과서입니다.

가장 좋은 생각은 저학년 3000 레벨의 알고리즘 과정을 수강하기 전에 프로그래밍에서 9-12 학점을 수강하는 것입니다. 내가 언급 한 두 권의 책에 대한 자율 학습은 좋은 대안이 될 수 있습니다 (자기 학습은 모든 사람을위한 것은 아닙니다).

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.