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