본문 바로가기

Knowledge

(36)
Selection Sort (선택정렬) 선택정렬(Selection Sort)란? 선택정렬은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다.1. 주어진 리스트 중에 최소값을 찾는다.2. 그 값을 맨 앞에 위치한 값과 교체한다.3. 맨 앞에 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 비교하는 것이 상수 시간에 이루어진다는 가정 아래, n개의 주어진 리스트를 이와 같은 방법으로정렬하는데에 Θ(n2) 만큼의 시간이 걸린다. import java.util.Scanner; /** * Created by Itner on 2017. 7. 19.. */ public class SelectionSort_Rz { public static void main(String[] ar) throws Exception { Scanner scan =..
Doubly Linked List (이중 연결 리스트) 이중 연결 리스트(Doubly Linked List)란? 단순 연결 리스트의 경우 노드는 다음 노드에 대한 참조만 가지고 있으므로 단방향으로 밖에 탐색을 하지 못한다.이중 연결 리스트는 이를 보완하여 다음 노드뿐만 아니라 이전 노드의 참조까지 추가하여양방향으로 탐색이 가능하도록 만들어 검색속도를 향상시킬 수 있는 방법을 제공한다. package datastructure; public class DoublyLinkedList_Rz {class DoublyLinkedList{private Node head;private int size;public DoublyLinkedList(){head = new Node(null);size = 0;}private class Node{private Object data;..
Simple Linked List (단순 연결 리스트) 단순연결리스트(Simple LinkedList)란? 단순연결리스트는 각 노드에 자료 공간과 한 개의 포인터 공간이 있고,각 노드의 포인터는 다음 노드를 가르키는 하나의 참조만을 갖는다.다음 노드의 참조만 가지고 있으므로 노드의 접근은 한 방향으로만 가능하다. public class SimpleLinkedList_Rz { class SimpleLinkedList{private Node head;private int size; public SimpleLinkedList(){head = new Node(null);size = 0;} private class Node{private Object data; // 데이터가 저장될 필드private Node nextNode; // 다음 노드를 가르키는 필드 publi..
Stack(스택)과 Queue(큐) 스택(Stack)이란? 스택은 데이터가 들어온 순서대로 차곡차곡 쌓이는 형태의 기억공간을 말한다.출력 시 가장 나중에 쌓인 데이터가 제일 먼저 출력을 하게 된다.그러므로 스택을 선입후출 혹은 LIFO(Last In First Out)이라고도 부른다 스택에서는 TOP, POP, PUSH라는 용어를 사용한다. TOP이란 스택의 맨 위의 데이터인 즉, 최근에 들어온 데이터를 가리키는 화살표라고 생각하면 된다.데이터가 입/출력이 되면 이 TOP이란 화살표는 움직이면서 스택안에서 데이터가 최대 몇개가 저장되어있는지 알 수가 있다. POP이란 스택에 있는 데이터를 이용해 연산을 할 때에 데이터를 삭제하기 위한 것이다. PUSH란 데이터를 삽입하기 위한 것이다. TOP이 다음 데이터가 돌아올 자리로 이동하면 그 자리..
스테이트 패턴 (State Pattern) 스테이트 패턴 (State Pattern)객체 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다.마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 》》 상태 객체를 따로 생성하고, 상태 객체에게 위임하여 동작 ※ 스테이트 패턴의 예제천원짜리 지폐를 넣으면 100원짜리 동전 10개로 교환해주는 동전교환기가 있다.이 동전교환기를 어떻게 구현하는 것이 좋을까? 우선 동전교환기의 상태들을 모은다.이것을 상태에 따라 if문으로 구현한다면?디자인원칙 OCP를 지키지 못한다.객체지향 디자인이라고 보기엔 무리가 있다.지저분한 조건문으로 인한 가독성이 저하된다.무엇보다 추후에 발생하는 유지보수와 코드 확장의 어려움을 겪는다.그렇다면 어떻게 구현하는 것이 좋을까?먼저 동전교환기에 관련된 모든 행동의 메소..
이터레이터 패턴 (Iterator Pattern) 이터레이터 패턴 (Iterator Pattern) 컬렉션 구현방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게해주는 방법을 제공해준다. 》》 집합체내에서 어떤식으로 일이 처리되는지에 대해서 전혀 모르는 상태에서 그 안에 들어있는 모든 항목에 대해 반복작업 수행 가능》》 직접 Iterator 인터페이스를 만들 수도 있지만 자바에서는 Iterator 인터페이스를 제공한다. 이터레이터 패턴 예제음악사이트를 이곳 저곳 사용하다보니 여러 사이트에 플레이리스트가 흩어져있다.플레이리스트를 한 곳에 합쳐서 보고싶은데 어떻게 해야할까?각각의 플레이리스트를 단순하게 합쳐서 출력하려다보니까 각각의 사이트는 노래를 저장하는 방식이 달랐다.그러다보니 각각의 저장방식에 맞게 출력하려면 일일히 접근..
자료구조와 자료구조를 결정하는 방법 자료구조 (data structure)전산학에서 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다.신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다. 프로그램을 설계할 때, 어떠한 자료구조를 선택할지는 가장 우선적으로 고려되어야 한다.자료구조에는 여러 종류가 있으며, 이러한 각각의 자료구조는 각자의 연산 및 목적에 맞추어져 있다. 자바에서는 기본적인 자료구조를 제공하는데 이러한 자료구조를 제공하기 위한 환경을Java Collection Framework라고 한다. Java Collection Framework의 기본 상속구조는 다음과 같다. 그렇다면 자료구조를 결정할 때 고려해야할 사항들은 무엇이 있을까?고려해야하는 사항들은 때에 따라 많겠지만 기본적으로 살펴보면데이터들..
Set (HashSet, TreeSet) Set 순서가 없고 집합이므로 중복된 데이터가 들어갈 수 없다.중복되지 않은 데이터를 구할 때 유용하다. ※ HashSet가장 빠른 임의 접근속도순서를 전혀 예측할 수 없다.HashSet hs = new HashSet(); ※ TreeSet정렬된 순서대로 저장하며 정렬 방법을 지정할 수 있다.TreeSet ts = new TreeSet();