728x90

분류 전체보기 224

[자료구조] 힙(Heap)

힙구조 최댓값 혹은 최소값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 하는 자료구조 (루트가 최댓값 혹은 최소값이다.) 특징 루트가 최댓값을 나타내는 최대힙 - 부모값은 자식의 값보다 항상 크거나 같다.. 루트가 최솟값을 나타내는 최소힙 - 부모값은 자식의 값보다 항상 작거나 같다. 형제간에는 대소관계가 정해지지않는다. 루트가 최대값 혹은 최소값을 가리킨다. 높이가 h인 이진트리 최대로 가질 수 있는 총 노드 수 = (2^h)-1 높이 h에서의 최대노드수 2^(h-1) 높이가 3일 때 1+2+4 = 7 (2^3)-1 =7 높이 3에서의 최대노드수 2^(3-1) = 4 자바코드 힙구현 import java.util.Arrays; /** * 최대힙구현클래스 최대힙 : 완전이진트리 구조..

[java] 템플릿 패턴_추상클래스 활용

템플릿 패턴이란? 추상클래스를 활용한 디자인 패턴이다. 템플릿 패턴의 템플릿 메소드 추상메소드, 구현메소드 등으로 코드의 흐름, 즉 시나리오를 정의한 메소드이다. final선언으로 상속받은 자식클래스가 임의로 시나리오를 변경할 수 없도록 한다. 보통 프레임워크에서 많이 활용한다. 예를 들어 다양한 정렬 알고리즘을 구현하고 시간과 비교횟수를 비교하고자 한다. 시간과 출력등을 각처리 과정에서 하면 일단 동일한 내용을 여러번쓰게 되고, 나중에 해당 내용을 수정할 때 모든 클래스의 수정을 해야한다. 동일한내용임에도 불구하고 이 때, 정렬 알고리즘 부분만 다르므로 추상클래스화하고 시간이나 정렬 내용을 출력하는 공통 내용을 템플릿 메소드로 구현하면 간편하다. import java.util.Arrays; /** * ..

[java] 추상클래스(abstract class)

1. 추상클래스란 구현바디 없이 메서드의 선언만 있는 추상 메소드를 포함한 클래스 메서드는 원래 선언부 아래 바디를 구현하는 정의를 하는데 선언만하고 정의를 안한 메소드가 추상클래스 메서드선언(declare) 반환타입, 메서드이름, 매개변수 메서드정의(definition) 메서드 선언 +바디까지 정의 2. 특징 abstract 예약어를 사용 추상클래스를 인스턴스화 할 수 없음(new불가) -> 해당 클래스는 상속이 목적임. 변수를 가질 수 있음 추상클래스를 상속받은 자식 클래스가 추상메소드를 구현하지 않는다면 그 클래스 역시 추상클래스가 되어야한다. 상속받은 클래스에서 재정의를 하기 위해서는 private를 사용하지 못한다. (상속받은 클래스에서만 사용할 때 protected) 3. 추상클래스 작성 메서..

728x90