일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 차이
- 해시테이블
- class area
- boj
- hashmpa
- 단어의개수
- 해시맵
- 자바
- 백준
- 메모리영역
- 백준 알고리즘
- 단계별로
- 데큐
- Stack
- Garbage Collecter
- array
- 1152
- 별찍기
- list
- 또뭐테그해야하냐
- 링크드해시맵
- 어레이리스트
- arraylist
- 백준알고리즘
- 자바 메모리 영역
- 배열
- 알고리즘
- java
- 풀어보기
- 정렬
- Today
- Total
장벚꽃박튤립
Insertion Sort - 정렬되어야 하는 원소의 인덱스가 K라 하면, K-1번째까지의 정렬된 배열에 K번째 인덱스가 있어야 할 위치에 적절히 삽입하여 정렬하는 방법. - 시간복잡도 최선(이미 정렬되어 있을 경우)은 O(N) , 최악은 O(N^2) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class InsertionSort implements Sort { @Override public void sort(int[] arr) { int temp; for(int i = 1; i 0; j--) { if(arr[j-1] > arr[j]) { temp = arr[..
0. JVM은 OS로부터 메모리를 할당받는다. - JVM은 할당받은 메모리를 영역지어서 관리한다. - OS로부터 받은 메모리를 Runtime Data Area라 칭한다. - Runtime Data Area는 5개 영역으로 구분짓는다. - Static Area, Stack Area, Heap Area, Native Method Stack Area, PC Register 1. Class Area or Method Area or Static Area - 모두 같은 영역을 칭함. - 전역변수와 정적 멤버변수(static 변수)는 이 영역에 저장된다. ★ - static area는 프로그램의 시작부터 종료가 될 때까지 메모리에 남는다. - 이는, 전역변수가 프로그램 종료될 때까지 어디서든 사용이 가능한 이유. 2..
- 가변 길이 배열 - 정수 인덱스를 이용하여 배열에 액세스 가능 - 동기화 보장 / 하나의 스레드만 벡터의 메소드 호출 가능 ★ - ArrayList는 동기화가 보장 안됨. - 멀티스레드가 아니라면 성능이 좋은 ArrayList를 사용할 것. 1 2 3 4 5 6 7 8 9 // 벡터 선언 Vector v = new Vector(); v.add("One"); v.add("Two"); v.add("Four"); v.add("Three"); for(String str : v) System.out.println(str); // One Two Four Three
- Map 인터페이스 계열의 대표적인 클래스. - 키(Key)와 값(Value)로 데이터 관리 / 키로 값 추출 가능. - 키는 중복 허용 x - 멀티스레드에서는 HashTable을 사용 (동기화 보장을 해주는) - 해시를 이용하여 저장하기 때문에 순서를 보장하지 않는다. - 키 또는 값으로써 null을 허용 ★ - 해싱 검색을 사용하기 때문에 대용량 데이터 관리에도 좋은 성능. - 해쉬맵의 get()메서드는 해시값으로 해당 배열에 바로 접근이 가능하기 때문에 성능은 O(1)로 빠름 1 2 3 4 5 6 7 8 9 10 11 12 // HashMap 선언 HashMap map = new HashMap(); map.put(1, "AAA"); map.put(2, "BBB"); map.put(3, "CCC")..
- Deque (덱 혹은 데큐)라 불리며 큐의 응용 - 큐의 양쪽에서 삽입과 추출을 수행할 수 있는 자료구조 - 자바에서 덱은 인터페이스로 구현되어 있다. (ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 클래스) - Stack에서의 push, pop과 Queue에서의 offer, poll 모두 사용 가능 1 2 3 4 5 6 7 8 // 덱 선언 Deque deque = new ArrayDeque(); deque.offer(1); // 1 deque.push(2); // 1 2 deque.offerLast(3); // 3 1 2 while(!deque.isEmpty()) System.out.println(deque.pollLast(..
- FIFO(First in First out) 구조 (선입선출) - 가장 오래된 데이터를 front - 가장 최근에 입력된 데이터를 rear - 삽입은 rear에서, 삭제는 front에서 진행 - 큐가 비었음 > rear == front - 자바에선 Queue API 제공 1 2 3 4 5 6 7 8 // 큐 선언 Queue q = new LinkedList(); q.offer(10); // 10 q.offer(20); // 10 20 q.offer(30); // 10 20 30 while(!q.isEmpty()) System.out.println(q.poll()); // 10 20 30 - 자바에서 큐는 인터페이스 형태이므로 LinkedList 혹은 Array를 통해 사용 가능 - 큐는 원소의 추가 ..
- LIFO (Last in First out) 구조를 가진 자료구조 - 원소의 삽입, 삭제가 한쪽 끝에서만 이루어 진다(top) - 삽입(push) 추출(pop) 읽기(peek) 등의 메소드 1 2 3 4 5 6 7 8 9 // 스택 선언 Stack stack = new Stack(); stack.push(3); // 3 stack.push(2); // 2,3 stack.push(1); // 1,2,3 - LIFO while(!stack.isEmpty()) System.out.println(stack.pop()); - 용도 지역 변수 저장 함수 호출의 순서 제어 수식 계산
배열 (Array) - 크기를 동적으로 변경 불가 - 배열 초기화시 메모리에 할당되어 ArrayList보다 속도가 빠르다. 어레이리스트 (ArrayList) - 크기를 동적으로 변경 가능 - 데이터 추가 삭제시 메모리를 재할당하기 때문에 속도가 배열보다 느리다. - 배열이 가득차는 경우 알아서 그 크기를 2배로 할당하고 복사를 수행 Array ArrayList 사이즈 초기화시 고정 초기화시 사이즈를 표시 x 변경 사이즈 변경 불가 추가 삭제 가능(add, remove) 다차원 가능 불가