자료구조란 무엇일까..?
여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의한 것이라고 할 수 있다.
데이터는 분석하고 정리하여 활용해야만 의미를 가질 수 있다.
필요에 따라 데이터의 특징을 잘 파악(분석)하여 정리하고, 활용해야 한다.
데이터를 정해진 규칙없이 저장하거나, 하나의 구조로만 정리하고 활용하는 것보다 데이터를 체계적으로 정리하여 저장해두는 게, 데이터를 활용하는 데 있어 훨씬 유리하다.
무수한 상황에서 데이터를 효율적으로 다룰 수 있는 방법을 모두 모아, 자료구조라는 이름을 붙였고, 이 많은 방법 중에서 가장 많이 쓰이고 알고리즘 테스트(코딩 테스트)에 자주 등장하는 네 가지를 알아보자.
Stack
,Queue
,Tree
,Graph
Stack
은 쌓다, 쌓이다, 포개지다 와 같은 뜻을 가지고 있다.
마치 접시를 쌓아 놓은 형태와 비슷한 이 자료구조는 직역 그대로, 데이터(data)를 순서대로 쌓는 자료구조다.
동전쌓기처럼 가장 나중에 쌓은 동전을 가장 먼저 꺼낼 수 있는 구조를 생각하자.
쌓는 과정을 push, 위에서부터 하나씩 꺼내는 과정을 pop이라고 한다.
Queue
는 줄을 서서 기다리다, 대기 행렬 이라는 뜻을 가지고 있다.
어떤 구조를 가지고 있을지 짐작해보자.
Queue는 Stack과 반대되는 개념으로, 먼저 들어간 데이터(data)가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out) 을 특징으로 가지고 있다.
톨게이트를 생각하면 이해하기 쉽다. 가장 먼저 진입한 자동차가 가장 먼저 톨게이트를 통과한다. 다시 말해, 가장 나중에 진입한 자동차는 먼저 도착한 자동차가 모두 빠져나가기 전까지는 톨게이트를 빠져나갈 수 없다는 말이다.
이 때 자동차가 들어오는 과정을 enqueue, 들어온 순서대로 빠져나가는 과정을 dequeue라고 한다.
자료구조 Queue
는 데이터(data)가 입력된 순서대로 처리할 때 주로 사용한다.