목록Algorithm (12)
Jun's Development Journey

1. Arrays.Sort()? - 자바에서 배열이나 리스트를 정렬하려할 때, Arrays 클래스의 sort() 메소드를 사용할 수 있다. - 이 메서드의 사용으로 정렬 로직을 따로 짜지 않고 정렬을 손쉽게 할 수 있다. - 이 메서드의 내부 로직은 Dual-pivot-QuickSort로 구현되어있다. - 이 정렬 방식은 평균적으로 시간 복잡도가 O(nlogn)으로 좋은 알고리즘이지만, 최악의 경우엔 O(n^2)이 될 수 있다. 2. 오름차순 정렬 2-1) 기본 타입 배열 오름차순(int,double, long...) 2-2) String 배열 오름차순 2-3) 기본 타입 배열 내림차순 - 기본 타입 배열을 내림차순으로 정렬하려면 기본 타입 배열을 Wrapper 클래스로 만들어 인자로 넣어줘야 한다. 2..

1. Priority Queue란? - 일반적인 큐는 FIFO(First In First Out)구조이지만, 우선순위 큐는 우선순위를 먼저 결정하고, 그 순위가 높은 순서대로 먼저 나가는 자료구조이다. - 우선순위 큐는 일반적으로 힙으로 구현되어 있다. - 데이터 삽입 시에는 우선순위를 기준으로 최대 혹은 최소 힙으로 구성되고, 데이터 삭제 시에는 빈 루트 자리에 맨 마지막 노드를 삽입한 후 아래로 내려가면서 맞는 자리를 찾아 저장하는 방식이다. 2. Priority Queue 사용법 2-1) 선언 - 우선순위 큐의 디폴트 정렬 방식은 우선순위가 낮은 것 기준으로 정렬된다. 높은 순으로 정렬을 하려면 선언시 매개변수에 Collections.reverseOrder() 메서드를 활용하면 된다. - 정수형, ..

1. TreeMap이란? - 이진트리를 기반으로 한 Map 컬렉션이다. - TreeSet는 값만 저장한다면, TreeMap은 키와 값이 저장된 Map.Entry()를 저장한다는 차이가 있다. - 키는 저장과 동시에 오름차순 정렬되고, 숫자 타입은 값으로, 문자열은 유니코드로 정렬된다. - 데이터가 저장과 동시에 정렬이 되기 때문에 성능면에서는 HashMap보다는 떨어진다. 하지만 정렬된 상태로 데이터를 유지해야 하거나 정렬된 데이터를 조회해야 하는 경우엔 TreeMap을 사용하는 것이 더 효율적이다. 2. TreeMap 사용법 2-1) 선언 2-2) 값 추가 2-3) 값 삭제 2-4) 출력

1. HashMap이란? - Map 인터페이스를 구현한 대표적인 Map 컬렉션이다. - Map의 성질을 그대로 가지고 있다. - 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가진 자료구조이다. - 값은 중복 저장될 수 있지만, 키 값은 중복될 수 없다. 그렇기 때문에 기존에 저장된 키와 동일한 키 값으로 저장하면 기존의 값은 사라지고 새로운 값으로 바뀐다. 2. HashMap 사용법 2-1) 선언 2-2) 값 추가 2-3) 값 삭제 2-4) 출력 - 특정 키값의 value를 가져오려면 get(key값)를 사용하면 되고, 전체를 출력하려면 entrySet()이나 keySet() 메소드를 활용하면 된다. - entrySet()은 key값과 value값 모두 필요할 때 사용하고, keySet()은 k..

1. HashSet이란? - Set 인터페이스의 구현 클래스이기에 Set 성질을 그대로 상속받는다. - HashSet과는 다르게 이진 탐색 트리 구조로 이루어져 있다. 이 구조는 추가 및 삭제는 오래 걸리지만, 정렬과 검색은 성능이 비교적 좋다. - 생성자의 매개변수로 Comparator 객체를 입력하여 정렬 방법을 임의로 지정 가능하다. - HashSet과 TreeSet의 차이는 정렬의 유무이다. - 이진 탐색 트리 중에서도 레드 블랙 트리로 구현되어 있다. ※ 레드 블랙 트리 부모 노드보다 작은 값은 왼쪽 자식으로, 큰 값은 오른쪽 자식으로 배치하여 편향트리가 되는 것을 방지한다. 2. HashSet 사용법 2-1) 선언 - HashSet과 다르게 선언 시 크기 지정을 해줄 수 없다. 2-2) 값 추..

1. HashSet이란? - Set 인터페이스의 구현 클래스이기에 Set 성질을 그대로 상속받는다. - 객체를 중복 저장할 수 없고, 저장 순서는 유지되지 않는다. - 저장 순서 유지를 위해선 LinkedHashSet 클래스를 사용하면 된다. - HashSet과 TreeSet의 차이는 정렬의 유무이다. 2. HashSet 사용법 2-1) 선언 - HashSet은 저장공간을 늘릴 때 한 칸씩 늘리는 것이 아니라 두 배정도로 늘린다. - 이 때 과부하가 많이 발생하니, 저장 데이터 갯수를 아는 경우엔 초기 용량을 정하는 것이 좋다. 2-2) 값 추가 및 삭제 2-3) 출력
문제 www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 풀이 1) 잘못된 알고리즘 접근(각각의 카운팅을 먼저 해주고, 많이 사용하는 기계일 수록 나중에 뽑는 식으로 했었다.) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Array; import java.util.*; public class Mai..
package Practice; import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub HashMap hash = new HashMap(); hash.put("baby", "아가"); hash.put("love", "사랑"); hash.put("apple", "사과"); Set keys = hash.keySet(); Iterator it = keys.iterator(); while(it.hasNext()) { String key = it.next(); String value = hash.get(key); System.out.println("Key : "+..