본문 바로가기

Programming/Algorithm

[알고리즘] 2.2.자료구조 : 연결리스트를 이용한 큐(Queue) 구현 큐 이해하기 2017/01/30 - [Programming/Algorithm] - [알고리즘] 2.2.자료구조 : 큐(Queue) 연결리스트를 이용한 큐 구현 배열로 구현한 큐의 단점은 크기를 미리 정해야 하고, 그 크기를 넘어서면 error가 발생한다는 것입니다. 반면 연결리스트로 구현하면 큐의 크기(size)를 미리 정할 필요가 없습니다. 위의 그림의 100번지, 200번지에 해당하는 것이 node인데 이 node는 앞의 게시물인 스택에서 구현한 노드class를 가져다 사용하겠습니다. //연결 리스트로 사용 할 노드 classpublic class Node {private Object data;private Node nextNode;public Node(Object data){this.data = d.. 더보기
[알고리즘] 2.2.자료구조 : 배열을 이용한 큐(Queue) 구현 큐 이해하기 2017/01/30 - [Programming/Algorithm] - [알고리즘] 2.2.자료구조 : 큐(Queue) 배열을 이용한 큐 구현 public class ArrQueue {private int front;private int rear;private int size;private Object[] arrQueue;public ArrQueue(int size){this.front = 0;this.rear = -1;this.size = size;this.arrQueue = new Object[this.size];}//Queue 배열이 꽉 차있는지 확인public boolean isFull(){if(rear >= size-1) return true;else return false;}//Qu.. 더보기
[알고리즘] 2.1. 자료구조 : 연결리스트 기반 스택(Stack) 구현 개요 스택이 무엇인지, 어디에 사용하고 무엇으로 만드는지에 대한 전체적인 내용은 이전 게시물을 참고하시면 됩니다. 스택 이해하기 연결리스트 기반 스택의 프로퍼티(속성) 으로는 top(데이터 삽입/삭제하는 위치), Node(스택을 구성하는 요소)로 구성되어 있습니다. 메쏘드(함수)로는 pop(삭제), push(삽입), peek(탐색)이 있고, 부수적인 함수로는 isEmpty(스택이 비어있는지 확인)가 있습니다. 구현 //연결 리스트로 사용 할 노드 class public class Node { private Object data; private Node nextNode; public Node(Object data){ this.data = data; this.nextNode = null; } //해당 노드를.. 더보기
[알고리즘] 2.1. 자료구조 : 배열 기반 스택(Stack) 구현 개요 스택이 무엇인지, 어디에 사용하고 무엇으로 만드는지에 대한 전체적인 내용은 이전 게시물을 참고하시면 됩니다.배열 기반 스택의 프로퍼티(속성) 으로는 top(데이터 삽입/삭제하는 위치), maxSize(배열의 최대크기), stackArray(배열)으로 구성되어 있습니다. 메쏘드(함수)로는 pop(삭제), push(삽입), peek(탐색)이 있고, 부수적인 함수로는 isEmpty(스택이 비어있는지 확인)가 있습니다. 배열을 이용한 스택 구현public class ArrStack {private int top; //마지막 위치 (삽입,삭제가 이루어질 위치)private int maxSize;private Object[] stackArray;//생성자 : 프로퍼티 초기public ArrStack(int s.. 더보기
[알고리즘] 2.3.자료구조 : 트리(Tree) 이해하기와 구현 개요 앞서 보인 큐(Queue), 스택(Stack) 등은 자료구조에서 선형 구조라 한다. 선형 구조란 자료를 구성하고 있는 데이터들이 순차적으로 나열시킨 형태를 의미합니다. 이번에 배울 트리는 비선형 구조입니다. 비선형 구조는 선형구조와는 다르게 데이터가 계층적(혹은 망)으로 구성되어있습니다. 선형구조와 비선형구조의 차이점은 구성형태뿐만 아니라 용도에서도 차이점이 들어나는데요, 선형구조는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고, 비선형구조는 표현에 초점이 맞춰져 있습니다. 그렇다면 트리는 무엇을 표현하기 위한 자료구조일까요? 컴퓨터의 directory 구조가 트리의 대표적인 예가 될 수 있습니다. 어떠한 프로그램, 사진, 영상 등을 찾을 때 우리는 폴더에서 폴더로 들어가면서 찾곤 합니다. 이렇게.. 더보기
[알고리즘] 2.2.자료구조 : 큐(Queue) 이해하기 개요 큐의 구조는 스택과 다르게 '선입선출'의 구조를 가지고 있습니다. 스택은 막힌 박스와 같아 먼저 들어온 것이 가장 나중에 나가는 구조지만, 큐는 먼저 들어온 것이 먼저 나가는 구조입니다. 좋은 예로 은행에 있는 번호표가 있습니다. 은행에 방문하여 기다리는데, 저보다 늦게 온 다른 분이 먼저 업무를 본다면 기분이 나쁘겠죠? 이러한 상황을 만들지 않기 위해 은행에서는 번호표를 나눠줍니다. 먼저 온 손님은 늦게 온 손님보다 먼저 서비스를 받게 하기 위해서죠. 이러한 은행의 번호표의 체계가 큐(Queue)입니다. 은행의 번호표를 다시 한번 생각해보죠. 제가 619번의 번호표를 뽑았다고 가정하여 봅시다. 지금은 618번 까지 서비스를 받고 있는 상태이고요. 그러면 번호표 시스템 내부에서는 다음 서비스를 받을.. 더보기
[알고리즘] 2.1. 자료구조 : 스택(Stack) 이해하기 개요stack대학교기본어단어장1.쌓다2.스택3.한 무더기4.더미 스택이란 자료구조는 사전적 정의인 '쌓다' '더미' 와 같습니다. 쉽게 설명하자면, 밑이 막힌 상자를 생각하시면 됩니다. 밑이 막혔으니 위로만 물건을 집어 넣을 수 있고, 뺄 수가 있겠죠? 이러한 구조 때문에 먼저 들어온 물건은 나중에 나갈 수 있고, 나중에 들어온 물건은 먼저 나갈 수 있게 됩니다. 이러한 구조를 '선입후출' '후입선출' 이라고 합니다. 자료구조를 공부하는 데 있어 코드로 구현하는 것도 중요하지만, 그보다 중요한 것은 자료구조를 어떻게 사용할지 아는 것이 더 중요합니다. 모든 자료구조는 [삽입],[삭제],[읽기]를 기본으로 가집니다. 따라서 앞으로 자료구조의 사용법은 이 세가지 위주로 알아보겠습니다. 스택 용도 및 예제 스.. 더보기