자료구조&알고리즘

크래프톤정글 2주차; 자료구조 中 스택, 큐, 우선순위 큐

jamie-lee 2022. 11. 6. 23:02

참고: https://www.boostcourse.org/ai100/lecture/739169?isDesc=false
https://www.boostcourse.org/cs112/lecture/119044?isDesc=false

스택과 큐 자료구조는 예전에 인공지능 강좌 들을때 정리해둔 것,
정글 들어오기 전에 부스트코스에서 CS50 모두의 컴퓨터 과학 강좌를 들으며 정리한 내용이다.
(CS50 강좌는 진짜 모두에게 추천이다. 너무 너무 재밌고 퀄리티가 아주 좋다. 이런 강의를 지구 반대편에서 무료로 들을 수 있어서 감사했다.)

자료 구조

  1. 데이터를 저장하는 형태와 집합
  2. 효율적인 문제 해결을 위해 올바른 자료 구조를 택해야 함!

스택 stack

  1. 나중에 넣은 데이터를 먼저 반환하는 메모리 구조 (Last In First Out - LIFO, 라이포라고 읽음. 후입선출)
  2. 가장 최신 것을 먼저 접근할 수 있는 구조 (ex. 부페의 접시를 가져갈 때, 지메일 메일함, 속옷함과 옷 서랍의 옷)
  3. data 의 입력을 push, 출력을 pop 이라고 함
  4. 배열이나 연결 리스트를 통해 구현 가능
  5. 파이썬에서 리스트를 이용해 스택 구조 구현 가능
  6. 관련 파이썬 메쏘드
    1. list.append() : push 하는 것(원소를 마지막에 추가하기) (ex. list.append(10))
    2. list.pop() : pop하는 것(마지막에 넣은 원소 리스트에서 제거 후 화면에 출력! → list가 변화하는 함수임)

큐 que

  1. 먼저 넣은 데이터를 반환하도록 하는 메모리 구조 (First In First Out - FIFO, 파이포라고 읽음. 선입선출.) (ex. 부페의 접시를 가져갈 때, 지메일 메일함, 속옷함과 옷 서랍의 옷)
  2. stack과 반대되는 개념
  3. 배열이나 연결 리스트를 통해 구현 가능
  4. 관련 파이썬 메쏘드
    1. dequeue(que) : 맨 마지막의 value 빠짐 (줄에서 나오기)
    2. enqueue(que, value) : 무조건 0 인덱스에 value 추가 됨 (줄에 들어가기)
    3. list.pop(0) : 첫번째 값이 빠지고 출력 됨