본문 바로가기
반응형

분류 전체보기714

Binary Tree & 순회 *목차 전위, 중위, 후위순회 차이 Binary Tree Binary Search Tree unbalanced Complete Binary Tree Full Binary Tree Perfect Binary Tree 전위(Preorder) 중위(Inorder) 후위(Postorder) Root, Left , Right Left, Root, Right Left, Right, Root 1 -> 2 -> 4 -> 5 -> 3 4 -> 2 -> 5 -> 1 -> 3 4 -> 5 -> 2 -> 3 -> 1 *Binary Tree 노드가 최대 2개의 자식노드를 가진다. *Binary Search Tree Root 노드를 기준으로 왼쪽자식 노드는 작은 값, 오른쪽 노드는 큰 값을 가진다. *unbalanced 왼쪽 자.. 2020. 7. 20.
다형성 / Up-casting & Down-casting 목차 다형성이란? 다형성의 예제 그림 참조변수의 형변환 예제 다형성이란? 다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것입니다. 부모 클래스의 참조변수로 자식 클래스의 인스턴스를 참조하는 방식으로 많이 사용합니다. 다형성, 업캐스팅, 다운캐스팅 부모-자식 관계의 클래스에서 어떻게 다형성을 활용하는지 아래 그림과 함께 보겠습니다. 부모가 Parent 클래스이고 자식이 Child 클래스입니다. 부모클래스 참조변수 Parent p 는 자식 클래스의 인스턴스 new Child()를 참조합니다. 이를, 업캐스팅(Upcasting) 이라고 합니다. 자동으로 형 변환을 합니다. Parent p = new Child(); 반대로 자식 클래스 참조변수 Child c가 부모 클래스의 인스턴스 new Parent.. 2020. 7. 20.
List ( ArrayList & LinkedList ) *목차 배열의 단점 ArrayList - 장점 - 단점 LinkedList - 장점 - 단점 Doubly LinkedList ArrayList & LinkedList 성능 비교 추가, 조회, 삭제 성능 비교 *배열의 단점 1) 배열의 크기가 고정되어 있다. 그 말은 적게 사용하든 많이 사용하든 사용량에 관계없이 고정된 메모리가 할당 된다는 것이다. 2) 새로운 요소를 넣는 과정이 굉장히 힘들다. 새로운 위치가 할당되어 기존 값들의 위치가 움직이고 새로운 값이 들어가야 하기 떄문이다. 제거 또한 마찬가지로 제거된 공간을 채우기 위해 많은 값들이 이동해야 하기 때문에 무겁다. ArrayList ArrayList는 내부적으로 배열을 구현한다. 항상 초기 size를 설정해야만 하는 배열과 달리 초기의 일정한 s.. 2020. 7. 19.
Wrapper class / Integer cache pool 기본타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Wrapper class란 자바의 기본 데이터 타입(primitive)을 객체 형태의 참조타입으로 만든 것이다. primitive를 객체로 감싼다는 의미로 "wrap"을 사용한다. 모든 기본 데이터 타입은 그와 관련된 클래스를 가지는 것이다. int와 char형태만 달라지는 것에 유의하며, 참고로 이 8가지의 기본타입 때문에 자바를 100% 객체지향언어라고 할 수 없다. 박싱(Boxing)과 언박싱(UnBxoing) 박싱(Boxing) : 기본타입 -> 래퍼클래스로 변환 언박싱(UnBoxing) : 래퍼클.. 2020. 7. 17.
Override vs Overload 차이점 Override와 Overload는 이름이 비슷하지만 다륵 특성을 가지고 있습니다. 특히, Overload의 경우에는 매개변수와 타입이 달라도 됩니다. Override Overload 메소드 이름 동일 동일 매개변수, 타입 동일 다름 반환형 동일 상관없음 Overide는 메소드 이름, 매개변수, 타입, 반환형이 같기 때문에, 내부 구현만 바뀐다고 생각하면 됩니다. Overload는 메소드이름과 반환형은 동일하지만, 매개변수와 타입의 구성 및 갯수가 다를 수 있습니다. 위 사진을 보면, Override는 보통 extends 등 상속을 할 때 메서드를 Override 한다고 표현합니다 Overload는메서드 이름은 같지만, 매개변수가 int와 long으로 서로 다를 수 있습니다. Override pu.. 2020. 7. 17.
Java Heap vs Stack (Memory Allocation) 개요 자바에서 메모리 관리를 하는 곳은 크게 Heap 영역과 Stack 영역이 있습니다. 해당 영역에는 어떤 데이터들이 저장되고, 어떤 방식으로 동작하는지 알아보도록 하겠습니다. 원시변수와 참조변수 스택과 힙을 이해하기 이전에 사전 지식으로 원시변수와 참조변수를 알아보겠습니다. 원시변수는 자바에서 사용하는 원시 자료 구조로 float, double, byte, short, int, long, char 등이 있습니다. 참조변수는 객체를 참조하고 있는 변수들입니다. Java Stack Memory 자바 스택 메모리에 할당되는 것은 다음과 같습니다. static 메모리 쓰레드 실행 메서드에서만 사용되는 원시변수(Primitive Types) 객체들의 참조변수(Reference Types) Stack 메모리는 .. 2020. 7. 15.
equals vs == (string pool) 목차 1. String pool이란? 2. 예제 2. String 불변의 법칙 3. intern()의 구현 1. String Pool이란? String Pool은 자바에서 생성되는 문자열 리터럴들이 저장되는 공간이며 JVM의 heap에 위치합니다. String 불변(immutable)의 법칙과 intern()의 구현을 컨셉으로 합니다. 처음에는 빈 공간으로 초기화되며, String이 생성될 때마다 추가됩니다. String Pool의 장점 1. 스트링 풀은 스트링 객체를 캐싱합니다. 다른 객체에 의해 사용되므로 JVM의 많은 메모리 공간을 절약합니다. 2. 스트링 풀은 재사용성 때문에 어플리케이션의 성능에 도움을 줍니다. 같은 값이 이미 스트링 풀에 존재한다면, 새로운 스트링 생성하는 시간을 절약합니다. .. 2020. 7. 14.
JDK, JRE 개요 JDK, JRE는 자바 프로그램밍을 위해서 꼭 설치해야하는 라이브러리의 일종입니다. 해당 라이브러리의 차이점과 개념을 알아보도록 하겠습니다. JDK JRE JVM Java Development Kit Java Runtime Environment Java Virtual Machine 컴파일, 문서화, 자바 프로그램 패키지에 필요한 도구이다. It is the tool necessary to compile, document and package Java programs. 자바 바이트코드가 실행되는 런타임 환경이다. JRE refers to a runtime environment in which Java bytecode can be executed. 추상화 머신. 자바 바이트코드가 실행되는 런타임 환경을.. 2020. 7. 14.
다익스트라(dijkstra) *목차 1. 다익스트라 알고리즘이란? 2. 시간복잡도 3. 수도코드 4. 백준예제 5. 생각할 점 1. 다익스트라 알고리즘이란? 음의 가중치가 없는 그래프에서 한 노드에서 다른 모든 노드까지의 최단거리를 구하는 알고리즘이다. 방향그래프, 무방향 그래프 모두 상관 없으나, 가중치가 음수인 edge가 단 하나라도 존재하면 이 알고리즘은 사용할 수 없다. 2. 시간복잡도 (V는 정점, E는 정점의 이웃노드) 처음 고안한 알고리즘은 O(V^2)의 시간복잡도를 가졌다. 이후 O((V+E)logV)의 우선순위 큐(=힙 트리)등을 이용한 더욱 개선된 알고리즘이 나왔다. O((V+E)logV)의 시간복잡도를 가지는 이유는 각 노드마다 미방문 노드 중 출발점으로부터 현재까지 계산된 최단 거리를 가지는 노드를 찾는데 O(.. 2020. 7. 13.
반응형