🤔 스택(Stack)이란? 스택의 개념 스택(Stack)이란 어떠한 자료를 쌓아서 올려놓은 형태의 자료구조입니다. 책상에 쌓여있는 책들이나 싱크대의 접시를 예시로 들 수 있습니다. 스택의 특징 스택은 위의 그림과 같이 아래에서 위로 쌓이는 형식이며 가장 최근에 들어온 자료를 top이라고 부릅니다. 뻥튀기를 꺼낼 때 가장 아래쪽의 뻥튀기를 꺼내려면 위에서부터 차례대로 뻥튀기를 꺼내야 하는 것처럼 가장 위쪽(최신)의 데이터부터 꺼낼 수 있으며, 이러한 스택의 구조를 후입선출(LIFO, Last In First Out)의 구조라고 합니다. 즉, 스택의 경우 자료의 삽입과 삭제는 한 곳(Top)에서만 이루어지게 됩니다. 만약 스택이 비어있을때 자료를 꺼내려고 시도를 하면 스택 언더플로우(Stack Underfl..
📌 배열(Array) 특징 논리적 저장 순서와 물리적 저장 순서가 일치하는 자료구조. 따라서 인덱스(Index)로 해당 원소에 접근할 수 있으며 Random Access가 가능합니다. 하지만 삽입/삭제 시 해당 원소에 접근하여 작업을 완료한 후 빈 공간이 생기지 않도록 shift 해줘야 하므로 O(N)의 시간이 소요됩니다. 장점 ⭕️ 논리적 저장 순서 = 물리적 저장 순서 메모리상에서 원소들이 연속적으로 붙어있어 인덱스 값을 이용하여 랜덤 접근(Random Access)이 가능 단점 ❌ 삽입/삭제가 번거로움 초기에 배열의 크기를 지정해야 하며, 고정적이고 변경할 수 없음 📌 동적 배열(Dynamic Array) 특징 배열과는 조금 다르게 동적 배열의 크기를 유동적으로 할 수 있고 메모리상에서 원소들이 연..
🤔 자료구조의 정의 가령, 마트에서 장을 본다고 생각해봅시다. 자료 = 마트 내의 상품들 구조 = 카테고리에 상품 진열 마트에서 필요한 물품들을 찾을 때 상품들이 뒤죽박죽이라면 원하는 것을 찾을 수 있을까요? 어떠한 분류로 상품들이 진열되었을 때 원하는 물건을 가장 빠르게 찾을 수 있을까요? 컴퓨터 과학에서도 마찬가지로 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 자료구조라고 합니다. 적절한 자료구조를 적용했을 때 자료를 더 효율적으로 저장하고 관리하며 실행시간 단축 및 메모리 용량의 절약을 이끌어 낼 수 있습니다. 📌 자료구조의 선택 기준 자료의 처리시간 자료의 크기 자료의 활용 빈도 자료의 갱신 정도 프로그램의 용이성 📌 자료구조의 특징 1. 효율성 자료구조를 사용하는 목적은 데..
자료구조(Data Structure) : 데이터를 표현하고 관리하고 처리하기 위한 구조 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성된다. 삽입(Push) : 데이터를 삽입한다. 삭제(Pop) : 데이터를 삭제한다. +) 스택과 큐를 사용할 때는 삽입과 삭제 이외에도 오버플로와 언더플로를 고민해야 된다. 오버플로(Overflow) : 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 발생 언더플로(Underflow) : 자료구조에 데이터가 전혀 들어있지 않은 상태에서 삭제 연산을 수행하면 발생 큐(Queue) 선입선출(First In First Out) 구조 큐 예제 from collections import deque #큐(Queue..
자료구조(Data Structure) : 데이터를 표현하고 관리하고 처리하기 위한 구조 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성된다. 삽입(Push) : 데이터를 삽입한다. 삭제(Pop) : 데이터를 삭제한다. +) 스택과 큐를 사용할 때는 삽입과 삭제 이외에도 오버플로와 언더플로를 고민해야 된다. 오버플로(Overflow) : 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 발생 언더플로(Underflow) : 자료구조에 데이터가 전혀 들어있지 않은 상태에서 삭제 연산을 수행하면 발생 스택(Stack) 선입후출(First In Last Out), 후입선출(Last In First Out) 구조 스택 예제 stack = [] #..