이번에는 리스트ADT를 알아볼겁니다. 우선 ADT를 먼저 알아야합니다. 추상자료형(ADT)이란 데이터구조의 추상형을 말한다고 하는데....조금 더 쉽게 말하자면 어떤 자료형이 있으면 그 자료형에 대한 연산을 명세한 것을 ADT라고 부르는 것입니다. 따라서 다음을 명세한다고 정리할 수 있겠습니다 1. 저장된 데이터 2. 데이터에 대한 작업들 3. 작업 중 발생 가능한 에러 상황들 예를 들어서 주식거래 시스템 ADT를 짠다고 하면 1. 데이터 : buy/sell 주문들 2. 지원하는 작업들 buy, sell, cancel 등이 있을 수 있다. 3. 에러 상황들 : 존재하지 않는 주식에 대한 buy/sell 주문, 존재하지 않는 주문에 대한 cancel 정말 쉽게 얘기하자면 그리고 실제로 C언어를 공부하다보면..
이번에는 데이터 구조의 기초에 대해서 이야기해봅시다. 우리가 스택, 큐, 리스트, 집합 이러한 데이터 구조를 설계할 때 우선 기초적으로 쓰이는 재료가 있는데 그것이 바로 배열과 연결 리스트입니다. 배열을 여러분들이 c, python에서 배웠다시피 순차적인 기억 장소에 할당된 유한한 개수의 데이터 원소를 저장하는 방식입니다. 이러한 배열에는 1차원, 2차원, 3차원....... 등의 다차원 배열들이 있고 각 배열들은 행 우선 순서 즉, 저 차원 우선적으로 데이터 원소들이 메모리에 할당됩니다. 배열은 프로그래밍 언어를 공부하면서 꼭 거치게 되는 개념이니까 아시는 분들이 많을 거라고 생각합니다 하지만 연결 리스트는 처음 보는 분들이 더 많을 거라고 생각하는데요 원리를 알고 보면 크게 어렵지 않은 개념입니다:)..
이번에는 재귀를 알아보겠습니다. 우선 재귀 알고리즘이란 알고리즘 자신을 이용해 정의된 알고리즘을 말합니다. 그리고 이러한 재귀는 재귀 케이스와 베이스 케이스로 이루어져 있습니다. 작동 원리 : 대기중인 재귀호출을 위한 저장/복구는 컴퓨터에 의해 자동적으로 수행됩니다. 그리고 만약 재귀알고리즘을 짜게 된다면 기본적으로 지켜야할 규칙들이 있습니다. 기본 규칙 베이스 케이스를 항상 가져야합니다. 재귀호출은 항상 베이스 케이스를 향해야 합니다. 저장/복구 때문에 성능이 저하되서 꼭 필요할 때만 써야합니다. 나쁜 재귀 베이스 케이스가 없거나 재귀 케이스가 베이스 케이스로 향하지 않습니다. 따라서 부정확한 결과, 미정지, 기억장소 고갈 등의 문제가 발생합니다. 이러한 재귀알고리즘에서 대표적으로 소개되는 사례는 하노..
자료구조 복습을 하면서 쓰는 글입니다. 먼저 첫번째로 공부할것은 알고리즘 분석에 대한 것입니다. 알고리즘 분석에 있어서 우선 우리는 좋은 알고리즘과 데이터구조를 설계해야만 합니다. 그러므로 알고리즘을 만든다면 실행시간과 기억장소 사용량을 최적화 할 수 있어야합니다. 그리고 실행시간을 따진다면 우리는 최악의 실행시간에 집중해야합니다. 평균실행시간도 있지만 구하기가 어렵고 보통은 최악실행시간이 용이하게 쓰입니다. 이러한 실행시간을 구할때 실험적 방법과 이론적 방법으로 2가지로 나뉘게 됩니다. 먼저 실험적 방법으로 실행시간을 구하는 것입니다. 프로그램 작성 다양한 크기의 입력으로 실행 실행시간 측정 도표로 작성 하지만 실험적 방법에는 여러가지 한계가 있습니다. 모든 입력을 다 고려하는 것이 아니기 때문에 특정..