728x90
반응형

전체 글 48

[자료구조]트리

Tree 그래프의 일종 서로 다른 두 노드를 잇는 길이 하나뿐인 그래프 루트(root) 노드: 최상위 노드가 리프(leaf) 노드: 자식 노드가 없는 노드 내부(interior) 노드: 루트 노드도, 리프 노드도 아닌 노드 상위 노드와 하위 노드를 각각 부모(parent) 노드와 자식(child) 노드라고 함 같은 부모 노드를 둔 자식 노드들끼리를 형제(sibling) 노드라고 함 Types of Tree Data Structures Binary Tree Binary Search Tree, Heap, Trie Red-Black Tree Height-Balanced Binary Tree AVL Tree, T-Tree n-Way Tree m-Way Trie 2-3 Tree Height-Balanced m-W..

자료구조 2022.05.29

[자료구조]Red-Black 트리(레드블랙트리)

Red-Black Tree 탐색, 삽입, 삭제 성능: O(log2n) 탐색, 삽입, 삭제에 binary search tree 알고리즘 사용 각 노드는 색상이 할당됨 Properties(Rules) 각 노드는 red 노드거나 black 노드다 루트 노드는 black 노드다 모든 leaf 노드는 black 노드다(NIL 포함) 모든 red 노드는 반드시 2개의 black 노드를 자식으로 갖는다 주어진 어떤 노드에서든 자식 노드까지 모든 경로에서 같은 수의 black 노드를 갖는다 Insertion 새로운 노드는 red 노드 상태로 binary search tree 삽입 uncle 노드를 확인해서 밸런스를 맞춘다 삽입에는 5가지 경우가 있을 수 있다 (N: 삽입하는 노드(red) P: N의 부모 노드, G: ..

자료구조 2022.05.26

[자료구조] 해싱(hashing)

Static Hashing Definition 배열 안에 key를 저장하고 탐색하는 기법 - hash table key를 배열의 index로 mapping 이를 bucket이라고 함 평균 성능: O(1) 탐색, 삽입, 삭제 index bucket 0 Korea 1 Japan 2 Qatar 3 Vietnam 4 China 5 Taiwan 6 Singapore 7 France Insert Thailand & Spain index bucket 0 Korea 1 Japan 2 Qatar 3 Vietnam 4 China 5 Taiwan Thailand 6 Singapore Spain 7 France -> index 5, 6에서 collision 발생 Insert SriLanka index bucket 0 Kore..

자료구조 2022.05.23

[자료구조] 정렬

Definition 리스트의 요소들을 특정 순서로 배열하는 것 Sorting Algorithms - 1 Internal Sorting 리스트가 메인 메모리 안에서 정렬되는 것 정렬 속도는 빠르지만, 데이터의 양이 제한적 External Sorting 부가적인 공간에서 리스트가 정렬되는 것 정렬 속도는 느리지만, 보조 공간을 이용하여 큰 데이터도 정렬할 수 있음 Insertion sort 새로운 key를 삽입하기 위해서 리스트에서 맞는 위치를 찾고 그 위치에 삽입 성능 O(n2) n = 키의 개수 짧은 리스트에서 간단하고 좋음 부분적으로 이미 정렬된 리스트일 때 좋음 Example // GeeksforGeeks void insertionSort(int arr[], int n) { int i, key, j;..

자료구조 2022.05.19

자바 입출력: Scanner vs BufferedReader

처음 자바를 배울 때는 키보드에서 입력받기 위해 Scanner를 사용했다. 그리고 혼자 공부를 시작하면서 BufferedReader를 더 많이 사용하기 시작했다. 그런데 막상 그 차이점은 잘 모르고 단순히 BufferedReader가 더 효율적이라는 말에 쓰기 시작했다. 그래서 두 가지를 비교해보았다. 1. Scanner java.util 패키지 키보드에서 입력받는 대로 바로 처리 엔터와 스페이스로 구분 -> 공백 입력 불가 원하는 타입으로 받을 수 있음 import java.util.Scanner; Scanner scanner = new Scanner(System.in); int n; n = scanner.nextInt(); 2. BufferedReader java.io 패키지 키보드의 입력을 버퍼에 ..

자바 2022.02.26

자바의 특징과 구조

1. 자바의 특징 운영체제에 독립적: 자바로 작성된 코드는 JVM(Java Virtual Machine) 위에서 실행되기 때문에 운영체제에 구애받지 않고 코드를 작성하고 실행할 수 있다. 눈에 너무도 익숙한 그 문장 Write once, run anywhere 객체지향언어: c++은 엄밀하게 말해서 객체지향언어가 아닌 객체지향지원언어라고 할 수 있다. 왜냐하면 객체를 이용하지 않고도 코드를 작성할 수 있기 때문이다. 그러나, 자바는 모든 것이 객체에서 시작해서 객체에서 끝나는, 말 그대로 '객체지향언어'이다. 비교적 배우기 쉽다: 자바의 정석에서는 이를 자바의 특징으로 내세우고 있는데, 사실 이건 사람 바이 사람이기 때문에 특징으로 볼 수 있는지 의문이 든다. 객체 지향의 사실과 오해를 보면 자바 개발자..

자바 2022.02.25

이클립스 vs 인텔리제이

처음 자바를 배울 때는 이클립스를 통해 배웠다. 그리고 Spring을 배우기 시작하면서 인텔리제이를 사용하기 시작했다. 그리고 인텔리제이를 사용해 보기 전에 안드로이드 스튜디오를 사용해보았는데 인텔리제이를 사용하기 시작하면서 안드로이드 스튜디오가 인텔리제이를 기반으로 만들어졌다는 것을 알게 되었다. 1년 전 학교에서 고작 한 학기 배운 자바를 다시 자세히 파보려 하는데 어떤 툴이 좋을지 고민하다가 알아보게 된 내용을 정리해보려고 한다. 이클립스 무료 자동 완성, 코드 추천 빈약 HTML, CSS, JS 코드 작성할 때 지원이 미약 Spring 개발 시 인텔리제이보다 번거롭고 어려움 특히 Lombok 설치 번거로움 전자정부 프레임워크는 공식적으로 이클립스 개발 환경을 지원함 인텔리제이 유료(무료 버전, 학..

자바 2022.02.25

자바 8 vs 자바 11

결론: 자바 11에서 몇 가지 기능이 추가되었지만 프로젝트 등에서는 안정성을 위해 자바 8을 사용하는 것이 좋다 자바 8 (출처: 스프링 입문을 위한 자바 객체 지향의 원리와 이해) Interface Default and Static Methods Lambda expressions // 람다식 미적용 코드 public class NoLambda{ public static void main(String[] args){ Runnable r = new Runnable(){ public void run(){ System.out.println("Run!!"); } } } } // 람다식 적용 코드 public class UseLambda{ public static void main(String[] args){ R..

자바 2022.02.25
728x90
반응형