목록컴퓨터과학 (42)
넘치게 채우기
배열 배열은 같은 자료형의 변수들을 각각 순차적으로 이은 자료구조이다. 배열이 가지고있는 자료의 순서와 메모리상에 저장된 자료의 순서가 일치한다. 배열을 각각 구성하는 값을 요소(element)라고 하고, 배열 내에서 요소의 위치값을 인덱스(index)라 한다. 배열 A에서의 인덱스 i값은 A[i]로 표기한다. 일반적으로 배열이라 하면, 크기가 정해진 정적 배열(Static Array)라고 한다. 순차 리스트 순차 리스트는 배열과 같은 개념이나, 하나 다른 점이 있다. 크기가 정해지지 않은 동적 배열(Dynamic Array)라는 것이다. 기존 배열보다 더 많은 요소들을 받아야 할 때, 크기가 더 큰 새로운 배열을 만들어 기존 배열을 복사하고, 새로 받는 값들을 추가시킨다. C언어의 벡터, 파이썬의 리스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dfJKJZ/btrK8feDRf6/sjCltukVRnuZKkTprUCHT0/img.png)
좋은 알고리즘이란 무엇일까? 실행 속도가 빠르고, 컴퓨터의 메모리를 적게 사용하는 것이 좋은 알고리즘이 될 것이다. 알고리즘이 얼마나 빠른지와, 얼마나 메모리를 적게 쓰는지를 평가할 때는 알고리즘의 시간 복잡도(Time Complexity), 공간 복잡도(Space Complexity)라는 척도를 이용한다. 시간 복잡도 시간 복잡도는 알고리즘의 속도에 대한 척도이다. 시간복잡도를 측정하는데는 연산이 이뤄지는 횟수를 센다. 연산은 데이터 입출력, 산술, 반복문, 조건문과 같은 제어문이 있다. 입력 데이터의 수 n에 따른 연산횟수의 함수 T(n)을 구성하고, 데이터의 수 n의 변화와 그 연산횟수 T(n)의 변화를 분석하여 알고리즘의 시간 복잡도를 평가한다. 선형 탐색(순차 탐색) 알고리즘을 예로 들어보면: ..