전체 글68 chapter13 자료구조 큐 3.1 큐 ADT FIFO 선입선출 3.1.2 큐의 핵심 기능 : 삽입과 제거 연산 전단 : 큐의 가장 앞 요소 후단 : 큐의 가장 마지막 요소 삽입은 후단, 제거는 전단에서 수행된다. 3.2 순환 큐 전단과 후단을 가리키는 변수를 만든다. 삽입이 일어날 때 마다 후단의 위치 +1. 삽입이 이루어질 때 후단이 가리키는 위치에 데이터를 바로 입력. 배열의 시작과 끝을 연결하면 메모리 용량을 잘 사용할 수 있다. 전단과 후단 사이에 공백 메모리를 둬서 큐가 공백상태일 때는 전단과 후단이 같은 곳을 가리키고, 큐가 포화상태일 때는 후단이 전단보다 1 작은 값을 가지도록 하여 상태를 구분한다. 3.2.2 순환 큐의 기본 연산 순환 큐의 노드 구조체 선언 typedef int ElementType; typedef.. 2023. 4. 14. Chapter04-2 알고리즘 트리-분리집합 4.4 분리집합 집합 : 특정 조건에 맞는 원소의 모임 분리집합 : 서로 공통된 원소를 갖지 않는, 즉 교집합을 갖지 않는 복수의 집합 따라서 분리집합의 개념은 2개 이상의 집합을 일컬을 때만 사용할 수 있다. 어디에 써먹나? 분리집합은 집합간의 교집합을 허락하지 않기 때문에 소속 관계가 분명해야 하는 데이터를 다룰 때 아주 유용하다. 분리집합은 원소 또는 개체가 '어느 집합에 소속되어 있는가?' 라는 정보를 바탕으로 무언 가를 하는 알고리즘에 응용' 할 수 있다. 4.4.1 분리집합 표현 이진트리는 부모가 자식을 가리키는 포인터를 갖지만, 분리집합은 이와 반대로 자식이 부모를 가리킨다. 뿌리 노드는 집합 그 차제이고, 뿌리 노드 자신을 포함한 트리 내의 모든 노드는 그 집합에 소속된다. 분리집합 노드의.. 2023. 4. 13. 8. java 상속, 오버라이딩, getter&setter 상속 oo는oo다 상속관계는 is a관계 또는 kind of 관계 라고 말하기도 한다. 상속 = 일반화 + 확장 버스, 레미콘, 트럭을 자동차라고 부른다면 그것은 일반화. 자동차 + 삽 = 포크레인 이라고 하면 확장! 자동차를 확장하는 개념. 부모와 자식관계 부모쪽에 화살표 표시를 해준다. 부모의 기능을 자식도 가진다. 일반화 시킨다 : 자식클래스들을 부모클래스로 부를 수 있는 것을 말한다. (TV는 전자제품이다) 상속은 가장 강한 결합이다. 반드시 써야할 때만 쓰고 되도록 사용하지 않는 게 좋다. (상속은 배우지만 좋지 않다!) 좋은 객체는 응집도는 높고 결합도는 낮아야 하기 때문! 잘못 상속 받으면 타격이 너무 크다. 상속 선언 방법 [접근제한자][abstract final] class 클래스명 ex.. 2023. 4. 10. 7. java 패키지 패키지 클래스는 패키지를 이용하여 관련된 클래스들을 관리한다. 자바에서 패키지는 폴더와 거의 같은 기능을 제공한다고 생각하면 된다. 클래스를 만들다보면 개수가 매우 많아진다. 클래스가 개수가 많아지면 관계 있는 것들을 모아서 관리해야 한다. 패키지 -> 클래스를 모아논 폴더 패키지 이름 규칙 도메인 이름을 거꾸로 적은 후에 프로젝트 이름 등을 붙여서 만들게 된다. 도메인.프로젝트명.패키지명 음악을 예로 들면, 음악을 어떻게 즐기느냐에 따라 폴더를 만드는 방식이 다르다. 패키지에서도 관련된 클래스를 모으는 것이 중요한데 '관련된'을 어떻게 정의하는가? 패키지를 만든다는 것은 아키텍처와 매우 관련이 있다. (아키텍처 : 구조) 초가집, 양옥집, 아파트는 아키텍처도 다르고 재료도 다르다. 초가집창고 : 초가집.. 2023. 4. 10. 6. java 클래스 잘 만들기 Person 클래스에 메소드 추가 public class Person { String name; //인스턴스필드 String address;//인스턴스필드 boolean isVip;//인스턴스필드 static int count = 0;//클래스필드 public void printName() { // 인스턴스 메소드 System.out.println("내 이름은"+name); } public static void printCount(){ //클래스 메소드 System.out.println("count:"+name); } } 클래스가 가진 메소드는 필드를 내부적으로 사용할 수 있다. 파라미터로 받는 것 제외하고도, 사용할 수 있다. printCount() 메소드에서 인스턴스필드를 사용할 수 있을까? JVM은.. 2023. 4. 10. Chapter06 탐색, 이진탐색 알고리즘 6.1 탐색 알고리즘의 개요 탐색 : 데이터를 찾는다 자료구조 형태에 따라 사용할 수 있는 여러 가지 탐색 알고리즘이 있다 6.2 순차탐색 처음부터 끝까지 차례대로 모든 요소를 비교하여 원하는 데이터를 찾는 탐색 알고리즘 선형탐색(linear Search) 자료구조 : 배열, 링크드리스트에 쉽게 적용할 수 있는 알고리즘. 링크드 리스트를 위한 순차탐색의 구현 예 매우 간단하다는 장점. Node* SLL_SequentialSearch(Node* Head, int Target){ Node* Current = Head; Node* Match = NULL; while (Current!= NULL) { if (Current->Data == Target) { Match = Current; break; } else .. 2023. 4. 7. 이전 1 2 3 4 5 6 7 ··· 12 다음