자료구조란?
대량의 데이터를 효율적으로 관리하기 위함. 여러 알고리즘들을 효율적으로 구현하기 위함.
수학(소수, 최댓값 등) -> 자료구조 -> 재귀 -> DP -> 그래프(DFS/BFS) -> 최단경로 -> 이분탐색 -> 분할정복 -> 그리디
-> 완전탐색, 시뮬레이션, 구현-> 문자열 -> 투 포인터, 슬라이딩 윈도우 -> 백트랙킹
배열(array)
- 같은 종류의 데이터를 순차적으로 저장하는 자료구조
- index를 통해 접근 가능하며, 빠르게 접근 가능하다는 장점
- 데이터 추가 및 삭제시 비용이 많이 사용되는 단점이 존재
큐(Queue)
- 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조 (선입선출FIFO)
- 시분할시스템 등 운영체제에서 많이 쓰임
기능
- enqueue : 큐에 데이터를 넣는 기능을 의미 (append와 유사)
- dequeue : 큐에서 데이터를 꺼내는 기능 (pop과 유사)
# 큐 초기화
queue = []
# 큐에 항목 추가 (Enqueue)
queue.append(1)
queue.append(2)
queue.append(3)
# 큐에서 항목 제거 (Dequeue)
dequeued_item = queue.pop(0) # 첫 번째 항목을 제거
print("큐에서 제거된 항목:", dequeued_item) # 출력: 1
# 큐의 현재 상태
print("현재 큐:", queue) # 출력: [2, 3]
스택(stack)
- 가장 나중에 쌓은 데이터를 가장 먼저 뺼 수 있는 데이터 구조 (후입선출LIFO)
- 웹 브라우저(하이퍼링크)에 많이 쓰임
기능
- push() : 데이터를 스택에 쌓는 기능 (append와 유사)
- pop() : 데이터를 스택에서 꺼내는 기능
# 스택 초기화
stack = []
# 스택에 항목 추가 (Push)
stack.append(1)
stack.append(2)
stack.append(3)
# 스택에서 항목 제거 (Pop)
popped_item = stack.pop() # 마지막 항목을 제거
print("스택에서 제거된 항목:", popped_item) # 출력: 3
# 스택의 현재 상태
print("현재 스택:", stack) # 출력: [1, 2]
'자료구조 및 알고리즘 스터디' 카테고리의 다른 글
4. 분할정복과 이분탐색 (0) | 2025.01.04 |
---|---|
0. 시간복잡도와 정렬 (0) | 2024.12.30 |
1. 정렬, 그리디 (0) | 2024.11.20 |