새싹교실/2012/열반/120507 (rev. 1.6)
1. 출석 및 진행 ¶
- 김민규
- 채유빈
- 과제 설명 및 배열에 대한 개념 학습
- 자료를 처리할 때, 많은 변수를 각각 선언하거나 코드를 나열하는 것보다 배열을 쓰면 편리합니다.
int main()
{
int A[10]; // 정수형 데이터 10개
printf("%d", A[0]); // 배열의 첫 번째 원소 출력
}
- An으로 선언할 경우 첨자는 0 부터 n-1 까지 쓸 수 있습니다.
- 배열은 기초적인 자료구조 중 하나입니다.
- 배열의 특징은 연속적인 메모리 공간을 가진다는 점입니다.
- 원하는 원소에 즉시 접근할 수 있습니다.
- 원소를 삭제하거나 삽입하는 일은 어렵습니다.
- 다른 자료구조(리스트, 트리)에 비해 다루기 쉽습니다.
- 어떤 도서관의 서가에 책이 정렬되어 있지 않다고 가정해봅시다. 그 상황에서는 어떤 특정한 책을 찾기는 매우 힘듭니다. 우리가 도서관에서 책을 쉽게 찾을 수 있는 이유는 책들이 정렬 되어 있기 때문입니다. 단, 저런 편리함을 위해서는 어느 정도의 비용이 발생합니다. 기존의 데이터를 정렬할 때 드는 비용이 있고, 새로운 데이터가 삽입하려 할 때 정렬을 유지하기 위해 드는 비용이 발생합니다. 예를 들어 도서관의 서가에 책이 정렬되어 있으면 새로운 책이 들어왔을 때 제 자리에 찾아 꽂아야 하지만, 정렬되어 있지 않다면 아무 빈 공간에 꽂으면 됩니다. 이렇듯 비용이 발생하기 때문에, 어떤 자료를 항상 정렬할 필요는 없습니다. 찾는 일보다 추가하는 일이 훨씬 많다면 정렬하지 않는 것이 이득이 될 수도 있습니다.
- 원소 간의 비교가 가능한 데이터 N개가 주어졌을 때, 각각의 데이터에 순위를 부여하는 방법에 대해 생각해보세요.