반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


큐(Queue)

 

먼저 넣은 데이터를 가장 먼저 꺼내는 구조를 가지고 있는 데이터 구조.

데이터를 추가한 순서대로 제거할 수 있어서 스트리밍, 너비우선탐색(BFS) 등에서 응용

 

FIFO(First-In, First-Out) 방식

 

파이썬에서 List를 사용하여 큐(Queue)를 구현할 수 있지만, List는 무작위 접근(Random Access)에 최적화된 자료 구조이기 때문에 Queue로 사용하기엔 적합하지 않습니다.

 

즉, List에 접근하는 시간 복잡도는 O(N)이기 때문에, 데이터가 많으면 많을수록 그 만큼 속도가 느려진다는 단점을 가지고 있습니다.

 

 

큐(Queue)의 기능

Enqueue : 큐에 데이터를 넣는 기능

Dequeue : 큐에서 데이터를 꺼내는 기능

 

 

파이썬에서의 deque

파이썬에서 collections 모듈에서 deque는 양방향에서 추가하고 제거할 수 있는 구조를 제공합니다.

 

우선순위 큐(Priority Queue)

 

우선순위 큐(Priority Queue)는 데이터 추가는 순서가 상관 없지만, 삭제할 때는 가장 작은 값을 먼저 제거하는 큐입니다.

 

from queue import PriorityQueue

#우선순위 큐의 사이즈 Default는 무한대
#크기를 설정하려면 priority_queue = PriorityQueue(maxsize = 10) 처럼 지정
priority_queue = PriorityQueue()

priority_queue.put(1)
priority_queue.put(2)
priority_queue.put(3)
priority_queue.put(4)

print(priority_queue.get())
print(priority_queue.get())

 

반응형

'알고리즘 > 자료구조' 카테고리의 다른 글

파이썬 자료구조 배열(Array)  (0) 2020.09.29
반응형

안녕하세요, 츄르 사려고 코딩하는 집사! 코집사입니다.

안녕하세요, 츄르 사려고 코딩하는 집사! 코집사입니다.


자료구조란?

 

정의

 

컴퓨터에서 데이터들을 효율적으로 관리(저장, 삭제, 수정 등)할 수 있도록 하는 데이터의 구조를 의미합니다.

 

데이터의 특성, 데이터 간의 관계 등 효율적인 데이터 관리를 위해 효율적인 알고리즘을 사용하고, 알고리즘을 통해 시간 복잡도나 코드의 효율성, 성능을 결정하곤 합니다.

 

종류

 

자료구조의 종류는 배열(Array), 스택(Stack), 큐(Queue), 링크드 리스트(Linked list), 힙(Heap), 트리(Tree) 등이 있습니다.

 

Python에서는 Tuple, List, Dictionary, set 등으로 자료구조의 대부분을 구현할 수 있습니다.


배열(Array)

 

Python에서 배열은 List로 쉽게 구현할 수 있습니다.

 

Python에서 배열은 같은 종류의 데이터를 순차적으로 저장할 수 있으며, Index를 통해 리스트의 값들에 접근을 할 수 있습니다.

 

A라는 리스트에 1,2,3,4,5를 넣고, print 문 또는 for문을 이용하여 A의 리스트에 있는 값들을 출력할 수 있습니다.

Python에서 Index는 0부터 시작하며 아래의 A 리스트의 0번 Index는 1입니다.

 

장점

  • Python에서 Index를 통해 리스트의 값들에 직접 접근을 할 수 있습니다.
  • 리스트의 값에 직접 접근을 하기 때문에 빠른 접근이 가능합니다.

단점

  • 빈 리스트로 정의하여 데이터의 추가와 삭제가 효율적이지 못합니다. 추가할 경우에는 리스트의 메모리 공간이 많이 필요하며, 삭제할 경우에는 메모리의 빈 공간이 생겨 처리를 해줘야 합니다.
  • 리스트의 길이 조절이 어렵습니다.

배열(Array) 연산

 

  • A.append(obj)

- A의 리스트에 추가시킨다. 뒤에 추가.

  • A.extend(list)

- A의 리스트에 list를 연결하여 확장한다.

  • A.insert(index, obj)

- A의 리스트에 지정한 인덱스 위치에 obj를 추가한다.

  • del A[index]

- A의 지정한 인덱스에 있는 리스트의 값을 삭제한다.

  • A.pop(index)

- A의 리스트에서 지정한 인덱스의 리스트 값을 삭제한다.

  • A.remove(obj)

- A의 리스트에서 0이라는 리스트의 값을 삭제한다.

  • A.reverse()

- A의 리스트의 값들의 순서를 반대로 배열한다.

  • A.sort()

- A의 리스트를 정렬한다.

- Default는 오름차순, 내림차순으로 설정하려면 A.sort(reverse = True) 사용

  • A.index(obj)

- A의 리스트에 있는 값의 인덱스 위치를 출력한다.

  • A.count(obj)

- A의 리스트에 obj가 몇 개 있는지 출력한다.


2차원 배열(Array)

 

2차원 배열은 행과 열로 구성된 것을 말합니다.

 

2차원 배열(Array) 선언

 

for문을 이용한 2차원 배열 선언

- 아래의 코드처럼 2중 for문을 사용하여 2차원 배열을 선언할 수 있다.

 

- 아래의 for문은 코드를 줄여 사용한 것이고, 풀어쓴 코드는 그 아래의 코드다.

 

반응형

'알고리즘 > 자료구조' 카테고리의 다른 글

파이썬 자료구조 큐(Queue)  (0) 2020.10.05

+ Recent posts