[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 4 회차 미션

2020. 10. 22. 22:03IT공부/자료구조&알고리즘 연습

오늘은 큐에 대해서 강의를 들었습니다.

  08 큐(1)

 --> queue는 운영체제에서도 많이 쓰이고 인터넷에서 네트워크 기능에서 많이 사용됨

  A. 큐의 구조

--> 라이브러리 이용하지 않고 큐를 직접 데이터 타입이나 리스트를 사용해서 구현하는 것이 좋다

-->가장 먼저 넣은 데이터를 가장 먼저 뺄 수 있다

  = 음식점에서 줄을 선 사람이 가장 먼저 음식을 먹을 수 있다

  = 줄을 서는 것과 유사

  = FIFO ( First In First Out)  +  LILO ( Last In Last Out)

  = 스택과 정반대로 기능

 B.알아둘것

--> 데이터 넣고 빼기

     ---데이터 넣기 ENQUEUE  데이터 빼기 DEQUEUE

 

 C. 파이썬의 큐 활용

 -->파이썬 QUEUE 라이브러리 활용해서 큐 자료구조 사용하기

 --> QUEUE() : 가장 일반적인 자료구조

 ---> LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조

 ---->PriorityQueue(): 데이터마다 우선순위를 넣어 우선순위가 높은 순으로 데이터 출력

   Queue() 로 큐 만들기

    import queue

    data_queue = queue.Queue()

      a.데이터 입력하기

        data_queue.put(“funcoding”)

        data_queue.put(1)

      b.데이터 사이즈 출력

        data_queue.qsize()

      c.데이터 인자 출력

        data_queue.get()   = 맨먼저 넣어진 데이터 출력된다

        data_queue.qsize() = funcoding을 제외한 1이 있는 data_queue 사이즈 출력

        data_queue.get() = 그다음 입력된 1을 출력

    08 (2)  = LIFO ( Last In First Out)

      import quere

      data_queue = queue.LifoQueue()  = 이 함수를 사용하는 queue를 선언

     data_queue.put(“funcoding”)  =data_queue 에 put을 사용해 funcoding 을 넣어

     data_queue.put(1)  =  data_queue에 put을 사용해 1 넣어 

     data_queue.qsize()  ==> 결과: queue의 크기 2출력

     data_queue.get()  ==> 결과: LIFO를 사용해 마지막에 넣었던 1이 출력

   08 (3) = Priority Queue() 로 큐 만들기

--> 데이터를 넣을 때 각각의 데이터 마다 우선순위 번호를 매겨

      데이터를 추출할 때 우선순위가 가장 높은 것을 추출

      import queue

     data_queue = queue.PriorityQueue() = 이 함수를 사용하는 queue를 선언

     형식: data_que.put( ( 우선순위, ) )  

           data_que.put ( ( 10 , “korea” ) )

            data_que.put( ( 5, 1 ) )

           data_que.put ( ( 15, “china” ) )

           data_que.qsize()  ==> 결과 3출력

data_qsize.get( )  ==> 우선순위가 제일 높은 것을 출력(5,1)

------>우선순위의 번호가 낮은 게 우선순위가 제일 높은 것

Q 어디에 큐가 많이 쓰일까

-->운영체제에서 멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 사용됨

-->큐의 경우에는 특별히 장단점 보다는 큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해해두는 것이 좋음

EXAMPLE 1  리스트 변수로 큐를 다루는 enqueue, dequeue 기능 구현하기

       queue_list = list( )  ==> 리스트로 만들어 

       def enqueue( data )   -- enqueue 구현하기

            queue_list.append( data )

       def dequeue( )   --dequeue 구현하기

         data =queue_list[ 0 ]

         del que_list[ 0 ]  - 뽑혀진 데이터 삭제 삭제안하면 계속 똑 같은 값이 나와

          return data

   반복문으로 값 넣기

   for index in range( 10 ) :   -  0부터 10까지 데이터를 넣어  

        enqueue(index)

        len(queue_list)

        dequeue( )

--> 이번 강의를 통해 큐의 특징과 종류, 그리고 갖고 있는 함수와 큐를 사용하는 방법에 대해서 학습할 수 있었습니다.

강의에 대해 정확하게 알고 싶다면 

https://bit.ly/2FgOONG