목록자바 (43)
불로구
중첩 인터페이스 - 중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스이다. 인터페이스를 왜 클래스 내부에 선언할까?! - 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서다. class A{ [static] interface B{ void m(); } } 중첩 인터페이스는 인스턴스 멤버 인터페이스와 정적 멤버 인터페이스 모두 가능하다 사용법 - 인스턴스 멤버 인터페이스는 밖 클래스의 객체가 있어야 사용 가능 - 정적 멤버 인터페이스는 밖 클래스의 객체 없이 밖 클래스만으로 접근 가능 - A 클래스의 내용을 보면 중첩 인터페이스 타입으로 필드 state를 선언했다. - setRunning메소드로 구현 객체를 받아 필드에 대입한다. - start()가 실행됐을 때 인터페이스를 통해 구현..
앞에서 push, pop, peek 메서드에 대해 알아보았다. 그럼 이번에는 그 외 메서드에 대해 알아보자 indexOf - 검색 메서드로서, 스택 본체의 배열에 x와 같은 값의 데이터가 있는지 위치를 알려주는 메서드 - 배열 인덱스가 큰쪽에서 작은쪽으로 스캔 - 해당 데이터가 있으면 위치를 반환, 없으면 -1반환 clear - 스택에 모든 데이터 삭제 capacity - 스택의 용량을 반환하는 값 size - 데이터 수를 확인 IsEmpty - 스택이 비어있는지 검사 - 비었으면 true / 아니면 false IsFull - 스택이 가득 찼는지 검사 - 가득 찼으면 true / 아니면 false dump - 스택안에 있는 모든 데이터 표시 - 바닥에서 꼭대기 순으로 표시 - 스택이 비었으면, 비었다고 ..
스택 - 데이터를 일시적으로 저장히기 위해 사용하는 자료구조 - 데이터의 I/O (입출력)은 LIFO( Last In First Out )구조 - 삽입(push) / 빼기(pop) 스택만들기 package 스택큐.스택; class StackEx{ private int max; //스택 용량 private int ptr;//스택 포인터 private int[] st;//스택 //기본 생성자 public StackEx(int capacity) { ptr = 0; max = capacity; try { st = new int[max]; }catch(OutOfMemoryError e) { max = 0; } } //push(삽입) public void push(int x){ if(ptr >= max) { Ove..
복잡도 - 알고리즘의 성능을 객관적으로 평가하는 기준 복잡도 종류 1) 시간복잡도 : 실행에 필요한 시간이 얼마인지? 2) 공간복잡도 : 기억 영역과 파일 공간이 얼마나 필요한지? method{ int i = 0; while(i 변수 i에 0을 대입하는 것은 한번이후 없으므로 O(1) - return의 경우도 한번만 실행하므로 O(1) - while의 조건과 if문, i++의 경우 평균횟수 n/2 -> n에 비례하는 경우의 복잡도를 O(n)으로 표기 n이 커지면 O(n)에 필요한 계산 시간은 n에 비례하여 점점 길어진다. O(1)의 경우 계산 시간은 변하지 않는다. O(f(n)) 과 O(g(n))의 복잡도 계산 - O(f(n)) + O(g(n)) = 0(max(f(n) , g(n)) - 2개 이상의 복잡..