자바/자료구조6 [Java] 우선순위 큐 (Priority Queue) 우선순위 큐(Priority Queue)란? 큐는 일반적으로 선입선출의 구조이지만 우선순위큐는 우선순위가 높은 순서대로 나가는 구조입니다. 우선순위큐는 최대힙 또는 최소힙을 이용하여 구현됩니다. 최대힙을 이용하고, 숫자 데이터라면 숫자가 큰 순서대로 데이터가 나가고, 최소힙을 이용하고, 숫자데이터라면 숫자가 작은 순서대로 데이터가 나갈것입니다. Priority Queue(우선순위큐) 선언 import java.util.PriorityQueue; //import //int형 priorityQueue 선언 (우선순위가 낮은 숫자 순) PriorityQueue priorityQueue = new PriorityQueue(); //int형 priorityQueue 선언 (우선순위가 높은 숫자 순) Priorit.. 자바/자료구조 2022. 12. 24. [Java] Heap, 힙 , 트리, 이진트리, 완전 이진트리 Heap(힙) 힙은 최솟값 또는 최댓값을 빠르게 찾아내기 위해 완전이진트리 형태로 만들어진 자료구조이다. 힙을 알기전에 트리구조 부터 알아보자. Heap(힙)은 우선순위큐 구현에 사용된다. 트리구조란? 위와 같은 구조가 트리구조이다. 부모 노드(parent node) : 자기 자신(노드)과 연결 된 노드 중 자신보다 높은 노드를 의미 (ex. F의 부모노드 : B) 자식 노드(child node) : 자기 자신(노드)과 연결 된 노드 중 자신보다 낮은 노드를 의미 (ex. C의 자식노드 : G, H) 루트 노드 (root node) : 일명 뿌리 노드라고 하며 루트 노드는 하나의 트리에선 하나밖에 존재하지 않고, 부모노드가 없다. 위 이미지에선 녹색이 뿌리노드다. 단말 노드(leaf node) : 리프 .. 자바/자료구조 2022. 12. 24. [Java] Stack, 스택 Stack ~을 쌓다는 의미, 벽돌을 쌓는다 생각했을때 가장 먼저들어온 벽돌은 가장 아래에 위치할 것이고, 가장 나중에 들어온 벽돌은 가장 위에 위치할 것이다. 그리고 다시 이 벽돌들을 치운다고 생각할때 , 맨위에있는 벽돌부터 빼낼것이다. 이렇게 먼저 들어온 데이터가 마지막에 나가는 구조를 후입선출(LIFO = Last in First out) 또는 선입후출(FILO = First in Last out)이라고 한다. (둘 다 같은 말이다.) search() 메소드 스택 내부 배열의 인덱스 값이 아니라 스택의 '상단으로부터 몇 번째에 위치 하는지'를 반환하는 것이다. 즉, 거리 개념이라고 보면 된다. Stack a = new Stack(); a.add(1); a.add(2); a.add(3); bw.wri.. 자바/자료구조 2022. 12. 20. [Java] Set [HashSet] Set HashSet은 컬렉션 인터페이스를 상속한 Set 인터페이스의 구현클래스(구현체)이다. Set은 집합이라는 뜻이며 , Map과 같이 저장순서를 유지하지않는다(인덱스 없음) 또한 중복값을 허용하지 않는다 (Map처럼) 객체 선언 Set set = new HashSet(); 초기화는 List와 같은 다른 컬렉션 구현체로 바로 가능. List list = new ArrayList(); list.add(2); list.add(2); list.add(2); list.add(2); set = new HashSet(list); bw.write("list to set , 중복값을 넣게되면 하나만 저장된다. :"+ set.toString()); 값추가 Set set = new HashSet(); set.add(5.. 자바/자료구조 2022. 12. 5. [Java] HashMap Map 인터페이스를 구현한 대표적인 Map 컬렉션, Map인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고있다. Map은 키와 밸류값으로 구성된 자료구조이고 키와 밸류값은 모두 객체이다. 값은 중복될 수 있지만 키는 중복 될 수 없다. 기존에 저장된 키와 동일한 키을 넣으려고하면 기존의값은 없어지고 새로운값으로 대체된다. HashMap은 해시함수를 통해 키와값이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수없고, 삽입되는 순서와 들어 있는 위치 또한 관계가 없다고한다. HashMap 선언 HashMap map = new HashMap(); // 기본적인 HashMap 생성방법 HashMap map2 = new HashMap(10); // 초기용량을 지정가능 HashMap map3 = n.. 자바/자료구조 2022. 12. 4. [Java] ArrayList, LinkedList ArrayList ArrayList는 배열을 기반에 두고있다. 장점 : 인덱스를 통한 데이터의 삽입,삭제,조회가 편하다. 단점 : 데이터의 추가,삭제가 느리다. get / set ArrayList는 조회 또는 값설정할때 시간복잡도는 O(1) 이다. 배열의 인덱스를 통해 접근하는 방식이므로 속도가 빠르다. ArrayList.add(data) List numbers = new ArrayList(); numbers.add(5); numbers.add(2); 맨뒤에 데이터가 추가된다. 시간복잡도는 O(1)이다. ArrayList.add(index,data) numbers.add(0, 11); 원하는 인덱스에 데이터를 삽입한다. 특정 인덱스에 데이터를 삽입하게되면 그 뒤에 요소들은 하나씩 뒤로 이동시켜주는 작업이.. 자바/자료구조 2022. 12. 3. 이전 1 다음