스택이란? 스택은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 스택은 입구와 출구가 같은 선형 구조이다. 따라서 가장 먼저 입구에 들어간 자료가 가장 늦게 출구로 나갈 수 있다. 프링글스 통을 생각하면 이해가 쉽다. 처음 프링글스 통이 채워질 때 가장 먼저 들어간 프링글스가 가장 마지막에 우리들의 손에 집혀 입으로 들어온다. 이를 후입 선출(또는 LIFO, last in first out) 구조라고 한다. 스택에서의 접근은 항상 마지막 원소에서만 일어난다. => 제일 위에 있는 프링글스를 잡는다. 이 마지막 원소를 top이라고 한다. 스택의 탐색 앞서 포스팅한 배열과 연결 리스트가 자료구조를 구현하는 기본적인 방법이다. 보통 스택의 탐색을 top함수라고 한..
자료구조(Data Structure)
이번 포스팅에선 배열 (Array)에 대해 살펴볼 것이다. 저번 포스팅에서 필요할 때마다 메모리를 할당받아 데이터를 저장하는 방법인 연결 리스트(Linked List)를 다뤘으니 이번 포스팅에선 미리 메모리를 확보한 다음 연속된 공간에 저장하는 방법인 배열에 대해 알아보자. 배열은 자료구조를 배우기 이전에도 컴퓨터 과학을 공부했다면 다 들어봤을 만한 기초적이고 중요한 것이다. 배열이란? 배열(array)은 같은 타입의 변수들로 이루어진 유한 집합으로 정의된다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 한다. 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료구조이다. 배열의 탐색 배열은..
이번 포스팅에선 연결 리스트(Linked List)에 대해 살펴볼 것이다. 먼저 데이터를 삽입하는 방법은 두 가지가 있다. 1. 필요할때마다 메모리를 할당받아 데이터를 저장하는 방법. 2. 미리 메모리를 확보한 다음 연속된 공간에 저장하는 방법. 여기서 1번이 연결리스트의 데이터 삽입 방식이다. 연결 리스트는 낭비되는 데이터는 없지만 연관된 데이터끼리 연결 짓는 것이 필수적이고 중요하다. 연결 리스트란? 연결 리스트는 두 개의 필드로 이루어진 node가 기본 단위이다. node는 데이터를 저장하는 데이터 필드와 다음 노드를 가리키는 링크 필드로 구성된다. node는 서로 다른 데이터 타입을 하나로 묶으므로 class에 해당된다. 따라서 링크필드에 해당하는 것은 class 포인터이다. 이를 노드형 포인터라..
한 학기 동안 자료구조를 수강했다. 자료구조를 배우고 난 후 문제 해결을 바라보는 각이 달라져있음을 느꼈다. 한 학기 동안 배운 자료구조의 내용을 되돌아보면서 누군가에게 도움이 될 수 있도록 포스팅을 해보려고 한다. 자료구조란? 자료구조(Data Structure)는 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키기 위한 학문이다. 즉, 자료를 효율적으로 사용하기 위해서 자료의 특성에 따라서 분류하여 구성하고 저장 및 처리하는 모든 작업을 의미한다. 자료+구조, 말 그대로 자료를 다루는 구조라고 생각하면 편할 것 같다. 굉장히 다양한 자료구조가 있고 각각의 뚜렷한 장단점이 존재한다. 그렇기에 특정한 상황에서 필요한 최고의 자료구조를 생각해낼 수 있는 능력이 중요하다. 자료구조를 배우는 이유? 자..