목표
- 잘 알려진 특정 문제를 통해 알고리즘의 설계 및 분석 방법을 습득해보자.
- 알고리즘이란 컴퓨터를 이용하여 주어진 문제를 해결하기 위한 학문이다.
- 문제를 해결하기 위한 일련의 단계적이고 효율적인 처리 과정
자료 구조
- 컴퓨터에서 데이터 사이의 논리적 관계를 표현하고 조직화하는 방법
- 선형(linear) 자료구조 : 배열, 연결 리스트, 스택, 큐
- 비선형(non-linear) 자료구조 : 트리, 그래프
배열(array)

- 같은 자료형을 갖는 여러 데이터를 하나의 변수 이름으로 모아 놓은 데이터의 집합 또는 (인덱스 값) 쌍의 집합
- 데이터가 순서(index)를 가지므로 쉽게 원하는 데이터에 접근할 수 있다.
- 삽입 또는 삭제 시 데이터의 이동이 생기므로 많은 변경이 있을 경우 배열 사용이 좋지 않다.
연결 리스트(linked list)

- 노드(하나 이상의 데이터 필드와 하나 이상의 링크 필드로 구성)라는 저장 구조를 연결해서 선형 리스트로 구현하는 방법
- 데이터 접근 시 처음부터 순차적으로 접근해야 하므로 모든 데이터를 비교해야 할 수도 있다.
- 삽입 또는 삭제 시 링크 필드 조정을 통해서 배열에 비해 비교적 쉽게 데이터를 변경할 수 있다.
스택(stack)