JAVA/자료구조 28

매개변수화 타입

들어가기 전에 매개변수화 타입을 사용하는 방법을 알아봅니다. 학습 목표 매개변수화 타입을 설명할 수 있습니다. 핵심 단어 제너릭 프로그래밍 매개변수화 타입 매개변수화 타입 제너릭 프로그래밍을 구현하기 위한 방법으로 매개변수화 타입을 사용할 수 있습니다. 꺾쇠괄호 안에 Type Parameter를 넣어 컴파일 시 구체적인 타입이 결정되도록 하는 방법입니다. 이렇게 매개변수화 타입을 사용하려면 클래스, 함수를 정의할 때 아래와 같이 고쳐주어야 합니다. 다만, 생성자의 경우 예외적으로 E를 사용하지 않습니다. 예시로, 매개변수화 타입을 사용하여 어떤 자료형이든 담을 수 있는 제너릭 노드를 만들면 다음과 같습니다. 아래 코드에서 E는 모두 같은 자료형을 의미합니다. 배열의 경우, 다음과 같이 정의합니다. 아래 ..

JAVA/자료구조 2021.10.01

제너릭 프로그래밍 소개

들어가기 전에 같은 함수를 서로 다른 자료형에 사용하려면 어떻게 해야 될까요? 각각의 자료형에 대해 함수를 제작해야 할까요? 데이터 형식에 의존하지 않는 제너릭 프로그래밍이 무엇인지 살펴보도록 하겠습니다. 학습 목표 제너릭 프로그래밍이 무엇인지 설명할 수 있습니다. 핵심 단어 제너릭 프로그래밍 제너릭 프로그래밍 제너릭 프로그래밍은 다양한 자료형의 객체에 대해 작성한 코드를 재사용한다는 객체 지향 기법입니다. 위와 같은 정렬 알고리즘이 있다고 합시다. 이 정렬 함수를 int 외의 다른 자료형에 대해 사용하려면 어떻게 해야 할까요? 제너릭 프로그래밍이 없었다면 int를 String, Person 등 문자열, 원하는 객체로 바꿔야 했을 것입니다. 제너릭 프로그래밍의 목표는 1가지의 코드만 작성해서 이를 다른 ..

JAVA/자료구조 2021.10.01

Comparable 인터페이스

들어가기 전에 객체에서 숫자, 문자열 비교를 하려면 어떻게 해야 될까요? 객체의 비교 방법인 Comparable 인터페이스에 대해 알아봅시다. 학습 목표 Comparable 인터페이스를 이해할 수 있습니다. 핵심 단어 오버라이드 Comparable 인터페이스 Override one의 hello world와 two의 hello world를 비교하는 Java 코드입니다. 두 개의 문자열을 비교하기 때문에 equals 메소드는 두 변수가 같다고 할 것입니다. 이번에는 hello world를 저장한 두 개의 객체가 있다고 해 봅시다. 이 때 equals 메소드는 두 개의 메모리 주소를 비교하게 될 겁니다. 따라서 두 개의 객체는 일치하지 않습니다. 이처럼, 객체 클래스의 equals는 메모리 주소를 비교하지만,..

JAVA/자료구조 2021.10.01

객체지향 프로그래밍

들어가기 전에 자료구조를 공부하기에 앞서, 객체지향 프로그래밍에 대해 복습합니다. 상속과 클래스를 활용하여 학생, 학부생, 교직원과 같이 대학에 있는 사람들을 표현하는 프로그램을 만들어봅시다. 학습 목표 객체지향 프로그래밍의 상속과 클래스를 이해할 수 있습니다. 핵심 단어 객체지향 프로그래밍 상속과 클래스 객체의 메모리 할당 방법 아래와 같이 new를 사용하여 객체(인스턴스) student를 만들면 Java 가상 머신은 코드를 읽고 메모리가 얼마나 필요한지 계산하고 그만큼의 공간을 힙에 할당합니다. 그리고 힙에 있는 공간을 가리키는 4바이트짜리 포인터를 하나 만듭니다. 상속 여러 개의 객체가 있으면 상속을 활용하여 객체 간의 관계를 나타냅니다. 대학에 있는 People, Student, Undergrad..

JAVA/자료구조 2021.09.30

빅 오 표기법 예시

들어가기 전에 빅 오 표기법을 활용하여 알고리즘의 효율성을 비교해봅시다. 학습 목표 빅 오 표기법을 올바르게 사용하여 알고리즘의 효율성을 비교할 수 있습니다. 핵심 단어 알고리즘 비교 빅 오 표기법 빅 오 표기법 예시 아래의 식이 옳은지 판단해봅시다. 문제 1. n\textstyle ^4\textstyle ^/\textstyle ^3n​4​​​/​​​3​​ = O( nlognnlogn ) 힌트) 알고리즘에서는 n이 무한으로 커진 경우를 가정하고 비교한다는 규칙과 log 함수를 포함할 경우 밑은 무시한다는 규칙을 사용하여 풀 수 있습니다. 문제 2. 3n^3+4n^2+5n+63n​3​​+4n​2​​+5n+6 = θ( n^3)n​3​​) 힌트) 낮은 차수의 항들은 무시한다는 규칙과 모든 상수를 삭제한다는 규..

JAVA/자료구조 2021.09.30

빅 오 표기법

들어가기 전에 알고리즘의 효율성은 어떻게 비교할까요? 알고리즘의 효율성을 수학적으로 표시하는 빅 오 표기법에 대해 살펴보도록 하겠습니다. 학습 목표 빅 오 표기법을 이해하고, 표기 내용의 의미를 설명할 수 있습니다. 핵심 단어 알고리즘 비교 빅 오 표기법 빅 오 표기법 빅 오 표기법은 알고리즘의 효율성을 표시하는 표기법입니다. 빅 오 표기법을 사용하면 어떤 알고리즘을 다른 알고리즘과 비교해서 표현하는 것이 가능합니다. 위 그래프는 복잡도가 nn 인 알고리즘에 빅 오 표기법을 적용한 결과입니다. x축은 복잡도 n, y축은 필요한 일의 양이나 메모리를 의미합니다. 다른 알고리즘이 이 그래프의 어떤 위치에 있는지에 따라 복잡도 nn 인 알고리즘과 다른 알고리즘의 복잡도를 비교할 수 있습니다. 다른 알고리즘이 ..

JAVA/자료구조 2021.09.30

복잡성 소개

들어가기 전에 많은 양의 데이터를 효율적으로 관리하기 위해 다양한 자료구조 및 알고리즘이 개발되어 왔습니다. 하지만 이 효율적이라는 것의 기준은 무엇일까요? 프로그램의 복잡도를 계산하여 이러한 알고리즘을 비교하는 방법에 대해 살펴보도록 하겠습니다. 학습 목표 작성한 프로그램의 시간 복잡도를 계산하여 알고리즘의 효율성을 비교할 수 있습니다. 핵심 단어 시간 복잡도 알고리즘 비교 시간 복잡도 시간 복잡도는 서로 다른 알고리즘의 효율성을 비교할 때 사용합니다. 시간 복잡도에는 몇 가지 규칙이 있습니다. - input \geq≥ 0 - functions do more work for more input - drop all constants - ignore lower order terms - ignore the ..

JAVA/자료구조 2021.09.30

자료구조의 시작

들어가기 전에 많은 양의 데이터를 관리하는 방법에는 어떤 것이 있을까요? 사용자의 복잡한 명령어를 컴퓨터는 어떻게 효율적으로 처리할까요? 이러한 역할을 하는 자료구조에 대해 살펴보도록 하겠습니다. 학습 목표 앞으로 배울 자료구조의 종류와 정의를 설명할 수 있습니다. 핵심 단어 연결 리스트 스택, 큐 해시 트리 정렬 연결 리스트 스택 & 큐 체인 해시 트리 정렬 생각해보기 1) 일상 생활에서 정리를 할 때 어떻게 정리를 하는 것이 효율적이였나요? 출처 : https://www.boostcourse.org/cs204/lecture/480264?isDesc=false 네이버커넥트재단

JAVA/자료구조 2021.09.30