Programming

Programming/java 자료구조

2-1) 연결 리스트, 노드와 크기

아래 내용은 부스트코스 강의를 들으며 정리한 것입니다. 연결 리스트(Linked list) 포인터를 사용하여 여러 개의 노드를 연결하는 자료 구조로, 순차적인 데이터나 많은 양의 데이터를 정리하기 위해 사용한다. 배열과의 차이 배열의 경우 필요한 요소보다 지나치게 크거나 작게 만들어 조정해야 한다. (처음 선언한 배열의 크기 변경 불가능) 연결리스트는 항상 맞는 크기로 만들어지도록 설계된다. 또한 배열처럼 메모리에 연속적으로 나열되는 것이 아니라 데이터들이 연속적으로 나열되는 것이다. + 삽입과 삭제가 용이하다. but 색인 시에는 시간이 걸린다. 출처: What’s a Linked List, Anyway? [Part 1] Information is all around us. medium.com 노드(n..

Programming/java 자료구조

1-5) Autoboxing, 예외 처리

아래 내용은 부스트코스 강의를 들으며 정리한 것입니다. Autoboxing 기본 자료형은 JVM에게 정확히 필요한 만큼의 메모리를 할당받는다. 반면 객체에 대해서는 4byte 포인터와 객체에 맞는 힙 공간을 할당한다. 기본 자료형은 객체 메소드를 상속받지 않는다. 그러나 자바에는 객체 버전의 기본 자료형인 Wrapper 클래스가 있다. Java 컴파일러는 기본 자료형 autoboxing을 이용해서 이 둘을 적절하게 서로 바꾼다. 즉 Autoboxing은 기본 자료형(Primitives type)의 값을 해당하는 Wrapper 클래스의 객체로 바꾸는 과정이다. 강의가 끊겨서 오라클의 자바 공식문서에서 가져온 예시.. (제네릭 사용) List li = new ArrayList(); for (int i = 1..

Programming/java 자료구조

1-4) 제너릭 프로그래밍, 매개변수화 타입

아래 내용은 부스트코스 강의를 들으며 정리한 것입니다. 제너릭(Generic) 프로그래밍 generic 포괄적인, 총칭[통칭]의 다양한 자료형의 객체에 대해 한 가지 코드를 작성해서 재사용할 수 있도록 하는 객체 지향 기법. // 정렬 알고리즘 예시 public class ss{ public int[] superSort(int[] array){ // ...sort... return array; } } (후에 배우게 될) 위와 같은 정렬 알고리즘을 정수형이 아닌 다른 타입에 대해 적용하고 싶을 때, 제너릭 프로그래밍을 사용하면 일일히 타입을 변경하지 않아도 된다. 제너릭 프로그래밍을 구현하기 위해 매개변수화 타입을 사용하여 특정 종류의 공간에 넣을 내용을 정의할 수 있다. 예를 들면, 리스트 인터페이스를 ..

Programming/java 자료구조

1-3) 객체지향 프로그래밍, Comparable 인터페이스

아래 내용은 부스트코스 강의를 들으며 정리한 것입니다. 객체의 메모리 할당 방법 Student s = new student(); 이와 같이 객체(인스턴스)를 만들었을 때 JVM은 코드를 읽고 객체가 필요로하는 메모리를 계산하여(즉 Student 객체가 무엇인지, 어디에서 상속된 것인지 확인하여) 그 만큼의 Student공간을 힙에 할당. 그리고 4byte 블록의 포인터를 만들어, 이 포인터가 힙에 할당된 공간을 가리키게 된다. 상속 여러 개의 객체가 있으면 상속을 활용하여 객체 간의 관계를 나타낸다. (extends) 예를 들어, 대학의 구성원을 People, Student, Undergraduate 3개의 클래스로 만든다고 하면 Studen가 People에 속하고 Undergraduate이 Studen..

Programming/java 자료구조

1-2) 빅 오 표기법

아래 내용은 부스트코스 강의를 들으며 정리한 것입니다. 빅 오 표기법 어떤 알고리즘을 다른 알고리즘과 비교해서 표현할 때 사용하는 방법. 알고리즘의 효율성을 표시하는 표기법으로, 가장 많이 사용됨. 복잡도 n인 알고리즘에 빅 오 표기법 적용 비교 대상이 되는 그래프가 어디에 위치하는 지에 따라, 이와 같이 표기하여 비교한다. O (빅 오 복잡도) - same or faster. 같거나 더 빠름 θ (세타 복잡도) - same. 같음 Ω (빅 오메가 복잡도) - same or slower. 같거나 더 느림 o (리틀 오 복잡도) - faster (not same). 더 빠름 ω (리틀 오메가 복잡도) - lower (not same). 더 느림 생각해보기 1. 빅 오 표기법을 각각의 부등호에 대응하면 어떤..

Programming/java 자료구조

1-1) 자료구조의 시작, 복잡성

아래 내용은 부스트코스 강의를 들으며 정리한 것입니다. 자료구조 (Data structure) 자료에 대한 처리를 효율적으로 수행할 수 있도록 데이터를 표현(조직) 및 저장하는 방법 + 자료구조에 따라 알고리즘은 달라짐, 즉 알고리즘은 자료구조에 의존적이므로 자료구조와 알고리즘을 함께 말하는 것. 다루게 될 자료구조의 종류 연결 리스트(Linked list), 스택&큐(Stack & Queue), 해시(Hash), 트리(Tree), 정렬(Sort) 시간 복잡도: 서로 다른 알고리즘의 효율성 비교 알고리즘 비교 시 규칙 1. input ≥ 0 입력값(n)은 시간 복잡도에서 음수일 수 없기에, 항상 0보다 크다고 가정한다. 2. functions do more work for more input 함수는 더 ..

medoeun
'Programming' 카테고리의 글 목록 (5 Page)