체대출신 코더의 개발자 성장기
내 가게의 회전률을 높이겠어! - Queue 본문
내가 갓 오픈한 가게의 사장이라고 생각해보자. 오픈빨(?)로 손님들이 입구에 인산인해를 이루고 있는데,
만약 Stack의 방식대로 손님들을 대하면 어떻게 될까?
방금온 손님 : "와 이 음식점 줄 엄청기네.. 엄청 기다려야겠다.."
나 : "방금온 손님 얼른 들어오세요, 저희집은 마지막에 오신 분 부터 드실수 있어요!"
방금온 손님 : "와!! 정말요? 감사합니다!"
1시간기다린 손님 : "뭐야? 그럼 내가 꼴등이야? 이게 뭔 X소리야"
이런 곳은 없겠지만.. 이런 회전률이 안좋은 가게를 누가 갈것인가..
그럼 회전률을 높이기 위해선 어떻게 해야 할까?
1. Queue의 정의
Queue는 일반적으로 우리가 상식적으로 생각하는 음식점에서의 프로세스를 생각하면 될 것이다.
온 순서대로 음식을 주문받고, 온 순서대로 음식이 나간다.
이러한 방식을 선입선출(First In First Out)이라 칭한다.
2. 특징
- 선입선출(First In First Out)
Queue는 가장 먼저들어온 데이터를 가장먼저 처리하는 방식이다.
이와 같은 특징때문에 '터널', '통로' 와 같이 이해하는 사람도 많다고 한다.
3. 어디에 사용함?
데이터 처리가 들어오자마자 즉각적으로 이루어지기 때문에 빠른연산이 필요한 CPU에 이러한 자료구조방식이
이용된다고 한다.
4. 의사 코드를 이용해 Queue의 기능을 작성해보기
- enqueue
가장 최신에 들어온 데이터를 맨 뒤에 추가 한다.
배열의 push와 같다.
의사코드
//가장 최신의 데이터를 기존의 데이터 맨 뒤에 추가 해준다.
- dequeue
가장 처음에 있는 데이터를 삭제한다.
배열의 unshift와 같다.
의사코드
//데이터목록의 가장 처음에 있는 데이터를 삭제 해준다.
- peek
첫번째 데이터 바로 뒤에 있는 데이터가 무엇인지 확인'만'한다.
의사코드
// 1번째 인덱스의 데이터를 출력만 해준다.
- front
첫번째 데이터의 인덱스
의사코드
// 첫번째 데이터의 인덱스를 출력해준다.
- rear
마지막 데이터의 인덱스. 데이터의 길이와 같지 않을까?
의사코드
//데이터의 마지막 인덱스가 몇인지 출력해준다.
'CodeStates > Datastructure' 카테고리의 다른 글
목적지까지 가능 방법은 너무나도 많지 - Graph (0) | 2019.05.29 |
---|---|
헷갈리고 어려울땐 목차정리를 해보자! 2 - 트리, B-Tree (0) | 2019.05.29 |
헷갈리고 어려울땐 목차정리를 해보자! - 트리, B-Tree (0) | 2019.05.29 |
처음 오는 곳이에요. 도와주세요! - Linked list (0) | 2019.05.29 |
상자에서 물건을 꺼내보자! - Stack (0) | 2019.05.29 |