본문 바로가기

Algorithm & problem solving

(5)
MyLinearMap와 해싱 MyLinearMap 클래스의 성능을 향상을 위해 MyLinearMap 객체의 컬렉션을 포함하는 MyBetterMap이라는 새로운 클래스를 만든다.내장된 맵에 따라 키를 나누므로 각 맵의 엔트리 개수는 더 줄어든다.finidEntry 메스드와 그것을 호출하는 메서드의 속도를 빠르게 한다. public class MyBetterMap implements Map { // MyBetterMap uses a collection of MyLinearMap protected List maps; /** * Initialize the map with 2 sub-maps. * */ public MyBetterMap() { makeMaps(2); } /** * Makes a collection of `k` MyLinear..
Map 인터페이스와 MyLinearMap 구현 Map 인터페이스 public interface Map { int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); V put(K key, V value); V remove(Object key); void putAll(Map)o; if (Objects.equals(key, e.getKey()) && Objects.equals(value, e.getValue())) return true; } return false; } } Map 인터페이스를 가지고 만들고 싶은 클래스에 implements Map을 통해 다양한 Map 클래스를 만들 수 있다.MyLin..
연결리스트 알고리즘 연결 리스트자료 구조가 연결은 노드라는 객체들이 다른 노드에 대한 참조를 포함한 형태로 저장된 것을 의미한다.연결 리스트에서 각 노드는 리스트의 다음 노드에 대한 참조를 포함한다.연결 구조의 다른예로는 트리와 그래프가 있다.이때 노드는 둘 이상의 다른 노드에 대한 참조를 포함한다. public class ListNode { public Object data;public ListNode next; public ListNode() {this.data = null;this.next = null;}public ListNode(Object data) {this.data = data;this.next = null;}public ListNode(Object data, ListNode next) {this.data =..
선택정렬 알고리즘 선택정렬 알고리즘 package com.example.demo.selectionSort; public class SelectionSort { public static void swapElements(int[] array, int i, int j) {int temp = array[i];array[i] = array[j];array[j] = temp;}public static int indexLowest(int[] array, int start) {int lowIndex = start;for(int i = start; i
컴퓨터 알고리즘 컴퓨터 알고리즘- 주어진 문제를 효율적으로 풀기위한 단계별로 기술해 놓는것. 컴퓨터 알고리즘 분석1. 문제정의- 해결하고자 하는 문제는 무엇인가?- 입력과 출력의 형태로 정의될 수 있는가?- 컴퓨터가 수행할 수 있는 형태로 전환이 가능한가? 2. 알고리즘 설명- 컴퓨터가 수행해야 할 내용을 하나씩 차례대로 정의한 과정 3. 정확성증명- 과정대로 수행하면 출력되고 항상 올바른 답을 내보는가?- 잘못된 답을 내보는 경우가 없는가?- 올바른 출력을 내보내고 정상적으로 동작하는가? 4. 성능분석- 수행시간 => 수행연산의 횟수를 비교하는 방식- 사용공간 성능분석비교대상1. 산술- add, multipy2. 데이터 입출력- copy, move, save3. 제어연산- if, while