큐는 입력과 출력하는 구멍이 다르다. 입력하는 구멍을 rear라고 하고 출력하는 구멍을 front라고 한다. 데이터를 넣고 꺼냄을 각각 enqueue, dequeue라고 한다.front와 rear를 고정시키지 않고 변수형태로 정의하면 링 버퍼(ring buffer)로
메모리 저장 방식 중 가장 일반적인 stack이다.입력과 출력하는 구멍이 하나이므로 나중에 입력하는 것부터 출력할 수 있다.
뜻은 사전 참조.직접 재귀 = 자기가 자기 자신을 호출간접 재귀 = 함수 a가 함수 b를 호출하고 b는 a를 호출 최대 공약수를 구하는 방법이다.예를 들어 22와 8의 최대 공약수를 구한다고 하면 다음 그림과 같이 직사각형을 더 작은 변을 한변으로 하는 정사각형으로
정렬의 핵심은 교환, 선택, 삽입이다. 버블 정렬 안정적(같은 값의 순서가 안바뀐다.) 뒤로 한칸씩 가면서 인접한 두개의 수를 비교해 정렬한다. 경우의 수는 n-1 + n-2.../2(바꾸거나, 안바꾸거나 평균) = n(n-1)/4 이다. 게다가 요소를 교환하는 s
브루트포스 알고리즘은 그냥 하나하나 다 해보는 알고리즘이다. 검색할 문자열의 크키가 M이고 검색 당하는 문자열의 크기가 N이면 시간 복잡도는 O(NM)이 되는 것이다. KMP는 브루트포스보단 더 빠른 알고리즘이다. 이는 건너뛰기 위한 표를 만들어서 작성된만큼 건너뛴다
리스트는 데이터를 줄지어 늘어놓은 자료구조이다. 선형 리스트 리스트 중에 가장 간단하다. 리스트의 데이터는 노드(또는 요소)라고 한다. 맨 앞 노드 : head node 맨 뒤 노드 : tail node 하나의 노드에 대해 바로 앞에있는 노드 : predecesso
트리는 노드(node)와 가지(edge)로 구성한다.가장 윗부분의 노드를 루트(root)라고 한다.가장 아랫부분의 노드를 리프(leaf)라고 한다.한 노드로부터 연결된 아래쪽 노드를 자식(child)이라고 한다.반대는 부모(parent)이다.같은 부모를 가지는 노드는
해시법은 검색과 더불어 데이터의 추가와 삭제도 효율적으로 수행할 수 있는 방법이다. 기본적으로 새로운 값을 배열 사이에 삽입하려면 O(n)의 시간이 든다. 해시법은 이를 보완한다. 해시법은 데이터를 저장할 위치를 간단한 연산으로 구하는 것이다. 게다가 추가, 삭제도
1<<k는 k번째 위치에만 비트 1이 있고 나머지에는 비트 0이 있다. 이를 통해 정수의 특정한 비트 하나에 접근이 가능하다(x&(1<<k)) != 0 이면 정수 x의 k번째 비트가 1이다.x|(1<<k) 는 정수 x의 k번째 비트를 1