분류 전체보기

이번 시간에 배워 볼 내용은 Queue(큐)입니다. 1. 큐(Queue)란? queue는 지난시간(링크 참조)에 배운 스택과 달리 선입선출(First-In-First-Out-FIFO)의 구조를 가지고 있습니다. 즉, 가장 먼저 들어간 것이 가장 먼저 나오게 되는 구조인 것입니다. 선입선출(FIFO)의 예로는 순서가 보장된 처리를 가지고 있는 '사용자가 몰리는 서버'와 같은 경우가 있습니다. 대학생이 수강신청을 하러 인터넷에 들어간 경우나 내가 좋아하는 가수의 티켓팅을 하기 위해 인터넷에 들어갔을 때 대기 순서와 같은 것을 본 적이 있을 것입니다. (또한 편의점에서 일을 해 보신 분들도 자주 들어본 용어일 것 입니다.) 이러한 경우 가장 먼저 들어간 사람을 우선순위로 다음 페이지로 연결이 되기 때문에 FI..
이번 시간에는 Stack 자료구조에 대해서 배워 볼 것입니다. 1. 스택(Stack)이란? stack은 후입선출(Last-In-First-Out; LIFO)의 대표적인 선형 자료구조 중의 하나입니다. 후입선출이란 'Last-In-First-Out'이라는 뜻 그대로 '나중에 들어온 데이터가 가장 먼저 나간다' 의 의미를 가지고 있습니다. 그 예로 인터넷 브라우저에서 뒤로 가기 기능같은 경우 그 버튼을 눌렀을 때 가장 최근의 페이지가 나오는데 이 역시 가장나중에 들어간 페이지가 가장 먼저 나오는 것이기 때문에 스택 구조라고 할 수 있습니다. 또한, Ctrl + z 와 같은 실행 취소 기능역시 제일 나중에 했던 동작을 취소하는 것이므로 스택 구조라고 볼 수 있습니다. 위 그림은 스택의 구조를 시각화한 자료입니..
이번 시간에는 LinkedList의 종류 중에서 Double LinkedList에 대해서 알아 보겠습니다. 1. Doubly Linked List(이중 연결 리스트)란? 이전 내용에 있는 LinkedList는 앞에 'Single'이 생략 되어있는 셈이라 생각하면 됩니다. 그럼 무엇이 single이고 무엇이 double일까요? 위 그림은 Double LinkedList의 대략적인 구조를 나타낸 그림입니다. 아래 그림을 보면, LinkedList와는 다르게 한 노드에서 다른 노드를 가리키는 pointer가 양방향으로 있습니다. 즉, 다음 노드를 가리키는 next pointer 말고도 이전노드를 가리키는 prev pointer 하나가 더 추가 된 것입니다. 이것이 LinkedList와는 구분되는 Double ..
이번 포스팅은 지난 포스팅에 이어 ArrayList에서 했던 것과 마찬가지로 LinkedList에서의 데이터 삽입, 데이터 삭제, 리스트 검색 등의 기능에 대해서 다뤄보도록 하겠습니다. 1. 연결리스트(Linked List)란? LinkedList는 Node라는 객체로 이루어져 있는데 Node는 데이터를 저장하는 field와 다음 노드를 가리킬 수 있는 next pointer field로 구성이 되어있습니다. 이말인 즉슨, 이 노드들이 연결된 형태의 자료구조를 바로 LinkedList라고 하는 것입니다. 예를 들어, 학교에서 어느 반의 모든 학생들의 데이터를 저장한다고 했을 때, 학생 한명 한명의 신상정보 자료를 노드로 만들고, 1번 학생의 신상정보 자료에 2번 신상정보 자료가 어디 있는 지 표시를 해 ..
첫번째 자료구조로 가장 간단한 형태의 리스트에 대해서 배워보겠습니다. 1. 리스트란? 리스트는 선형적인 자료구조 중의 하나로서 데이터를 일렬로 늘여 놓은 형태입니다. 그렇기 때문에 리스트는 순서를 가진다는 특징이 있습니다. 모든 언어를 사용하든 간에 가장 기본적으로 배우게 되는 메모리 공간 형태이며 자료형(Data Type)이 둘 이상의 값을 저장할 수 있습니다.(다만, Python은 예외) 이곳에서는 리스트를 어떻게 생성하고 어떻게 사용하는 지 보다는 리스트라는 자료구조에서 데이터를 어떻게 다루는 지에 대해 더 알고 싶기 때문에 이번 챕터에서는 리스트를 관리를 할 때 중요한 기능 3가지를 다루어 보겠습니다. 데이터 삽입하기 데이터 삭제하기 리스트 탐색하기 이 3가지는 어떤 데이터 구조를 다룰 때도 항상..
1. 자료구조와 알고리즘이란 음식과 그릇의 비유 우리 일상에는 수많은 음식이 존재하고 음식의 형태에 따라 어떤 그릇에 담기는 지가 상당히 중요합니다. 만약 파스타가 컵에 담기거나 음료수가 일반적인 그릇에 담긴다면 먹기가 굉장히 불편할 것입니다. 이처럼 데이터(Data)와 자료구조(Data structure)도 이와 같은 관계에 놓여있습니다. 데이터는 음식, 자료구조는 그릇이 되어 올바른 데이터 구조에 데이터를 담아야 더욱 효율적인 코딩이 가능해 집니다. 즉, 자료를 어디에, 어떻게 관리할 지를 제대로 알아야 코딩을 통해 내가 원하는 결과물을 얻을 수 있는겁니다. 예) 검색, 순회(iterate), 저장, 삭제, 변경 2. Data와 Data Structure 컴퓨터의 자원은 한정적이며(CPU, 메모리 등..
· 이모저모
저는 원래 깃헙 블로그를 사용했었는데 상당히 관리가 까다로워 다른 블로그로 이전을 고민하였고 결국 많이들 사용하는 티스토리로 옮기게 되었습니다. 사실 깃헙 블로그를 처음 사용했을 때는 UI도 그닥 나쁘지 않고 깃으로 포스팅을 하기 때문에 내가 마치 Git의 초고수가 된 양 사용할 수 있어서 좋았었는데 사용하면 할수록 저는 컴퓨터와 노트북을 같이 사용하다보니 환경이 바뀔 때마다 pull-push를 꼭 해 주어야 한다는 점이 너무 귀찮아졌습니다... 그리고 실제로 잘 올라갔나 확인하려면 Git에 반영이 되고 블로그에 반영이 되기까지 수십분이 걸릴 때도 있고 이를 실시간으로 보기 위해선 cmd 명령어로 bundle을 사용하여 로컬 포트를 열어서 봐야만 한다는 불편함까지 있었습니다. 그러다 보니 그냥 글은 ty..
1. Basic Concept 이 Data structure and algorithm에서는 자료구조와 알고리즘의 각 종류와 세세한 이론을 바탕 및 구현으로 한 내용이 주를 이루어 기술하는 카테고리입니다. 2. 시작하기 앞서... 자료구조와 알고리즘은 타 과목에 비해 중도포기하는 사람이 많은 과목이라고 합니다. 막히거나 답답한 부분이 자주 나올 수도 있지만 어려운 것이 정상이고 모두가 다 어려워 하기 때문에 기초부터 차근차근 배워나가면 충분히 소화할 수 있는 과목이기도 합니다. 이 카테고리(자료구조와 알고리즘 with Java) 에서는 모든 코드를 알고리즘 동작방식에 초점을 맞추어 java언어로 짰습니다. 파이썬을 이용한 자료구조와 알고리즘도 따로 포스팅 해 두었으니 파이썬을 이용한 자구알을 원하시는 분들..
cdragon
'분류 전체보기' 카테고리의 글 목록 (19 Page)