알고리즘과 데이터 구조
컴퓨터 공학 학위를 수여하는 대학의 전통적인 교과과정에서 중점적으로 가르치는 영역이다. 알고리즘은 컴퓨터 공학/프로그래밍과 관련된 다양한 문제를 푸는 가장 일반적인 방법이다. 프로그래밍에서 정렬을 수행할 때 흔히 쓰이는 알고리즘이 몇 가지 있다. 각 정렬 알고리즘은 속도, 필요한 메모리 크기, 적합한 데이터 종류가 무엇이냐에 따라 서로 다른 속성을 갖는다.
컴퓨터 공학 분야에서는 다양한 알고리즘을 사용하므로 진짜 프로그래밍 문제를 해결하는 도중에 마주치는 까다로운 문제를 풀려면 알고리즘을 다양하게 변형하는 방법을 익혀두는 게 좋다blog. 알고리즘을 잘 알면 다른 개발자가 며칠씩 품을 들여야 풀 수 있는 문제를 한 시간 만에 풀어내는 일도 종종 경험할 수 있다. 반대로 알고리즘을 잘 다루지 못하면 기존의 훌륭한 해결책도 제대로 활용할 수 없다. 이 부분만 두고 보더라도 알고리즘을 잘 배워둘 이유는 충분하다.
데이터 구조도 알고리즘과 비슷한 카테고리에 포함되며 알고리즘과 함께 쓰인다. 소프트웨어 개발자가 알아야 할 데이터 구조 중 몇 가지를 소개하면 다음과 같다.
- 배열, 벡터
- 연결 리스트
- 스택
- 큐
- 트리
- 해시
- 세트