자료구조 3

[자료구조] 덱 Dequeue

덱은 스택과 큐에 대한 기본적인 이해가 있는 것이 좋다. 혹시 스택과 큐의 개념을 잘 모른다면 관련 내용을 먼저 확인하고 오길 바란다. (스택, 큐) 덱 (Dequeue, Double-ended Queue) 덱은 스택과 큐를 합친 것이라고 보면 된다. 덱은 양쪽 끝에서 데이터를 넣고 뺄 수 있다. (큐에서 가장 앞에 위치한 데이터를 뽑아내는 연산과 표현이 같지만 동일한 개념이 아니므로 주의해야 한다.) 실제로 입출력 모두 양쪽에서 가능하도록 설정하는 덱은 별로 존재하지 않으며 기존 스택 혹은 큐에서 입력 혹은 출력 중 하나만 양쪽에서 이루어질 수 있도록 확장한 개념으로 많이 사용한다. (1) 스크롤 (scroll) : 출력은 양방향이 가능하지만 입력은 한쪽 끝만 가능한 덱 (2) 쉘프 (shelf) : ..

[자료구조] 큐 Queue

큐 (Queue) 큐는 FIFO(First-In First-Out)를 따르는 자료구조이다. 즉, 가장 먼저 넣은 아이템이 가장 먼저 제거되며 입구와 출구가 다른 자료구조이다. 일상적인 개념에서 '줄서기'에 빗대어 많이 표현된다. 큐의 연산 (1) enqueue( ) : 큐의 마지막에 새로운 아이템을 추가한다. (2) dequeue( ) : 큐의 첫 번째 항목을 제거한다. (3) front( ) : 큐의 첫 번째 항목을 알려준다. (가장 먼저 출력될 아이템) (4) rear( ) : 큐의 마지막 항목을 알려준다. (가장 최근에 추가된 아이템) 큐의 성능 - 탐색 : 큐에서 탐색은 모든 아이템을 하나하나 훑어봐야 되기 때문에 O(n)시간이 필요하다. - 삽입 : 상수 시간에 가능하다. - 제거 : 상수 시간..

[자료구조] 스택 Stack

스택 (Stack) 스택은 LIFO(Last-In First-Out)를 따르는 자료구조이다. 즉, 가장 최근에 넣은 아이템이 가장 먼저 제거되며 입구와 출구가 한 쪽만 열려있다고 생각하면 된다. 스택의 연산 (1) push( ) : 스택에 새로운 아이템을 추가한다. (가장 윗부분) (2) pop( ) : 스택의 가장 위에 있는 항목을 제거하고 반환한다. (3) isEmpty( ) : 스택이 텅 비어있는지 여부를 알려준다. (4) peek( ) 혹은 top( ) : 스택의 가장 위에 있는 항목을 보여준다. 스택의 성능 - 탐색 : 스택에서 탐색은 모든 아이템을 하나하나 훑어봐야 되기 때문에 O(n)시간이 필요하다. - 삽입 : 마지막에 데이터를 하나 추가해주면 되기 때문에 상수 시간에 가능하다. - 제거 ..