Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

체대출신 코더의 개발자 성장기

내 가게의 회전률을 높이겠어! - Queue 본문

CodeStates/Datastructure

내 가게의 회전률을 높이겠어! - Queue

미토콘크리트 2019. 5. 29. 15:14

 

Queue

내가 갓 오픈한 가게의 사장이라고 생각해보자. 오픈빨(?)로 손님들이 입구에 인산인해를 이루고 있는데,  

만약 Stack의 방식대로 손님들을 대하면 어떻게 될까?

 

방금온 손님 : "와 이 음식점 줄 엄청기네.. 엄청 기다려야겠다.."

         나         :  "방금온 손님 얼른 들어오세요, 저희집은 마지막에 오신 분 부터 드실수 있어요!"

방금온 손님 :  "와!! 정말요? 감사합니다!"

1시간기다린 손님 : "뭐야? 그럼 내가 꼴등이야? 이게 뭔 X소리야"

 

이런 곳은 없겠지만.. 이런 회전률이 안좋은 가게를 누가 갈것인가.. 

그럼 회전률을 높이기 위해선 어떻게 해야 할까?

 

1. Queue의 정의

줄로 예를 든 Queue

 Queue는 일반적으로 우리가 상식적으로 생각하는 음식점에서의 프로세스를 생각하면 될 것이다.

 온 순서대로 음식을 주문받고, 온 순서대로 음식이 나간다. 

 이러한 방식을 선입선출(First In First Out)이라 칭한다. 

 

2. 특징

 - 선입선출(First In First Out)

  Queue는 가장 먼저들어온 데이터를 가장먼저 처리하는 방식이다.

  이와 같은 특징때문에 '터널', '통로' 와 같이 이해하는 사람도 많다고 한다.

 

3. 어디에 사용함?

 데이터 처리가 들어오자마자 즉각적으로 이루어지기 때문에 빠른연산이 필요한 CPU에 이러한 자료구조방식이

 이용된다고 한다.

 

4. 의사 코드를 이용해 Queue의 기능을 작성해보기

 

equeue

 - enqueue 

   가장 최신에 들어온 데이터를 맨 뒤에 추가 한다.

   배열의 push와 같다.

 

  의사코드

  //가장 최신의 데이터를 기존의 데이터 맨 뒤에 추가 해준다.

 

 - dequeue

   가장 처음에 있는 데이터를 삭제한다. 

   배열의 unshift와 같다.

  

  의사코드

  //데이터목록의 가장 처음에 있는 데이터를 삭제 해준다. 

 

 - peek

   첫번째 데이터 바로 뒤에 있는 데이터가 무엇인지 확인'만'한다.

 

   의사코드 

   // 1번째 인덱스의 데이터를 출력만 해준다. 

  

 - front

Front

   첫번째 데이터의 인덱스

 

  의사코드

  // 첫번째 데이터의 인덱스를 출력해준다.

 

 - rear

rear

   마지막 데이터의 인덱스. 데이터의 길이와 같지 않을까?

 

 의사코드

 //데이터의 마지막 인덱스가 몇인지 출력해준다. 

 

 

 

 

 

Comments