본문 바로가기

자료구조

(19)
[Java] Iterable과 Iterator 자료구조를 공부하던 중 Iterable과 Iterator가 나왔다. Iterator는 알고 있었지만 Iterable은 알지 못했기 때문에 정리해보았다. Java 내부의 코드를 살펴보면, List, Set, Queue ⇒ Collection ⇒ Iterable 순서로 extends하는 관계를 가지고 있는 것을 알 수 있다. Iterable이 무엇이길래 extends 하고 있는지 알아보자. Iterable JAVA API 문서를 보면 Iterable 인터페이스에서 Iterator를 반환하는 iterator()가 메소드로 선언 되어 있음을 볼 수 있다. 이를 구현하는 클래스들은 강제적으로 iterator() 메소드를 구현해야 하고, forEach와 iterator()를 사용할 수 있게 되는 것이다. Itera..
[백준] 7662번: 이중 우선순위 큐 - JAVA 🔗 문제 링크 BOJ 7662번: 이중 우선순위 큐 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 1️⃣ PriotyQueue 📝 풀이 과정 큰 값과 작은 값으로 정렬해야 하기 때문에 고민하다 PriorityQueue를 두 개 사용하여 작은 값을 기준으로하는 minQueue와 큰 값을 기준으로 하는 maxQueue를 선언하였다. 기본적으로 PriorityQueue는 작은 값이 먼저 poll되기 때문에 maxQueue에는 Collections.reverseOrder()를 활용해 반대로 정렬하였다. 하지만,..
ArrayList와 LinkedList의 차이, 선택하기 알고리즘 문제를 풀면서 List를 사용해야 되는 일이 자주 발생한다. 차이를 알아보고 효율적인 Collection을 선택해보자 ArrayList 구조 ArrayList는 내부적으로 배열의 형태를 지니고 있다. get / set 배열의 index를 통해 접근하는 방식이기 때문에, random access속도가 빠르며 get / set 메소드는 상수 시간을 가지게 된다. add ArrayList는 배열이기 때문에 중간에 값을 끼워넣는 연산이 불가능하다. 만약 새로운 값을 추가하려고 할 때, List의 크기가 생성되어 있는 배열의 size(생성시 따로 설정하지 않았다면 size = 10인 배열이 생성된다)보다 커지게 되면, 이전 크기의 2배가 되는 배열을 생성해 배열 전체를 복사하여 새로운 배열에 복사하고 제..