본문 바로가기
[Data Structure] Stack 두 개로 Queue 구현하기 Stack 두 개(First In First Out)로 Queue(Last In First Out) 구현하기 스택 두 개를 다음과 같은 용도로 분리하여 사용. inStack : 데이터를 저장 outStack : 데이터를 꺼낼 때 임시 버퍼로 사용 [Queue.class] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 package algo_datastructure.stack.queuebystack; import java.util.Stack; class Queue { private Stack inS.. 2020. 1. 6.
[Data Structure] Queue 큐, array로 구현하기 (java) Queue FIFO(First In First Out : 선입선출) 형태를 갖는 자료구조. 일상생활에서 Queue와 가장 밀접한 예로 줄을 서는 행위를 들 수 있다. 보통 줄을 설 때 줄을 가장 먼저 선 사람이 가장 먼저 처리되므로 Queue와 같다.(Queue 라는 단어 자체가 줄을 서다 라는 뜻을 갖는 동사, 대기줄이라는 뜻을 갖는 명사 이다) [java.util.Queue 의 기본적인 사용예] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package algo_datastructure.queue.queuebyarray; import java.uti.. 2020. 1. 5.
[Data Structure] Stack 스택, array 로 구현하기 (java) Stack LIFO (Last In First Out : 후입선출) 형태를 갖는 자료구조. 임시로 자료를 저장하고 꺼내서 사용하는 임시 버퍼와 같다. java 메모리구조에서 new 연산자로 생성된 인스턴스 등이 Stack 으로 관리된다. 일상생활에서 Stack과 가장 밀접한 예로 장독대를 들 수 있다. 김치를 넣고 꺼낼 때 가장 나중에 넣은 김치를 가장 먼저 꺼내야 하는 구조이므로 Stack과 같다. [java.util.Stack 의 기본적인 사용예] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package algo_datastructure.stack; import java.util.Stack; public class BasicUsageOfStack .. 2020. 1. 5.
[Data Structure] HashSet, LinkedHashSet, TreeSet [Set] 중복을 허용하지 않는 자료구조로, 모든 데이터가 Unique 하다. Set Interface 를 구현하는 HashSet, LinkedHashSet, TreeSet 은 위와 같은 성질을 따른다. [HashSet] 내부적으로 HashMap 을 사용 순서 보장 X null 입력은 가능하나 null도 한 번만 저장 가능하며 중복될 수 없다 [LinkedHashSet] 내부적으로 LinkedHashMap을 사용 순서 보장 O (입력한 순서) null 입력은 가능하나 null도 한 번만 저장 가능하며 중복될 수 없다 [TreeSet] 내부적으로 TreeMap을 사용 인자값으로 받은 Comparator 를 기준으로 정렬, 인자값이 없는 경우 오름차순 정렬 null 입력 불가 1 2 3 4 5 6 7 8 9.. 2019. 12. 22.
[Data Structure] ArrayList, LinkedList, Vector [List] 순서가 있는 데이터의 집합, 데이터 중복을 허용 List Interface 를 구현하는 ArrayList, LinkedList, Vector 는 모두 위 성질을 따름 [사용법] ArrayList, LinkedList, Vector 모두 사용법이 동일하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 List al = new ArrayList(); al.add(1); al.add(2); al.add(2); //중복허용, 순서보장 //al.remove(0); System.out.print("ArrayList: "); for(int i:al) { System.out.print(.. 2019. 12. 20.
[Data Structure] HashMap, HashTable, LinkedHashMap, TreeMap Map은 키와 값이 한 쌍으로 이루어지는 데이터의 집합 값은 중복을 허용하나 키는 중복될 수 없음(키는 중복될 경우 덮어 씀) Map Interface 를 구현한 HashMap, HashTable, LinkedHashMap, TreeMap 은 모두 위 규칙을 따름. [HashMap] 순서가 보장되지 않는다. Null을 허용한다. Thread Safe 하지 않다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 //순서를 보장하지 않음 //key, value 에 Null 허용 //Thread safe X Map map = new HashMap(); map.put(1, 180); map.put(3, 175); map.put(2, 160); map.put(4, .. 2019. 12. 20.
트리 순회 트리 구조에서 각각의 노드를 단 한 번만, 체계적인 방법으로 방문하는 과정 전위 순회(=깊이 우선 순회) : F, B, A, D, C, E, G, I, H (root, left, right) 중위 순회(=대칭 순회) : A, B, C, D, E, F, G, H, I (left, root, right) 후위 순회 : A, C, E, D, B, H, I, G, F (left, right, root) 레벨 순서 순회(=너비 우선 순회) : F, B, G, A, D, I, C, E, H 2019. 11. 26.