이코테 정렬 알고리즘
구현하다가 어려운거 같아서 동빈님 코드 참고했다.
방향값에 해당하는 숫자를 dx, dy 배열의 인덱스로 사용하면 된다는 것을 생각 못했다.
복잡해서 일단 나중에 다시 풀기..
자바의정석 11장 컬렉션 프레임워크
이진트리(binary tree)
TreeSet
Set인터페이스를 구현해서 데이터 중복 허용x. 저장순서 유지 x.(이진검색트리는 정렬을 함)
이진탐색트리(binary search tree) 자료구조 형태의 컬렉션클래스
이진탐색트리 장점
단점
노드의 추가, 삭제에 시간이 걸린다.
→ 요소를 하나 저장할때마다 root부터 부모보다 큰지 작은지 비교하기때문에
생성자 TreeSet(Comparator comp) : 정렬 기준 제공하는 생성자
메서드 640p 참고
예제 1 - TreeSet은 저절로 정렬해서 저장한다!
public class TreeSetLotto {
public static void main(String[] args) {
Set set = new TreeSet();
for (int i = 0; set.size() < 6; i++) {
int num = (int) (Math.random() * 45) + 1;
set.add(num);
}
System.out.println(set);
}
}
</> 실행 결과
[9, 13, 16, 23, 26, 34]
예제2 - subSet(from, to) 예시 (범위검색)
public class TreeSetEx1 {
public static void main(String[] args) {
TreeSet set = new TreeSet();
String from = "b";
String to = "d";
set.add("abc");
set.add("bat");
set.add("car");
set.add("dance");
set.add("flower");
System.out.println(set);
System.out.println(set.subSet(from,to));
}
}
</> 실행 결과
[abc, bat, car, dance, flower]
[bat, car]
예제3 - headSet() : 미만, tailSet() : 이상 예시 (인자를 기준으로 작은 요소, 큰 요소의 객체 얻는 메서드)
public class TreeSetEx2 {
public static void main(String[] args) {
int[] score = {80, 95, 50, 35, 45, 65, 10, 100};
TreeSet set = new TreeSet();
for (int i = 0; i < score.length; i++) {
set.add(score[i]);
}
System.out.println("50보다 작은 값 : " + set.headSet(50));
System.out.println("50보다 큰 값 : " + set.tailSet(50));
}
}
</> 실행 결과
50보다 작은 값 : [10, 35, 45]
50보다 큰 값 : [50, 65, 80, 95, 100]