본문 바로가기

자료구조 및 알고리즘 스터디

1. 자료구조 stack

자료구조란?

대량의 데이터를 효율적으로 관리하기 위함. 여러 알고리즘들을 효율적으로 구현하기 위함.

수학(소수, 최댓값 등) -> 자료구조 -> 재귀 -> 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