728x90 알고리즘5 Stack 이란 Stack 이란 Last In First Out 형식의 자료 구조. Stack 연산 push(item) : item 을 스택 최상단에 추가한다. pop() : 최상단의 item을 반환 후 제거한다. 이때 stack이 비어있으면 EmptyStackException이 발생한다. peek() : 최상단의 item을 반환하고 제거하지는 않는다. isEmpty() : 저장된 item의 갯수가 0이면 true, 그렇지 않으면 false를 반환한다. Stack 클래스 문제점 모든 함수가 synchronized 되어있어서 단일 스레드 환경에서 성능이 떨어진다. Vector 클래스를 상속받은 클래스이므로 중간 데이터를 삭제하고 삽입하는 것이 가능하다. ArrayDeque Stack 의 기능을 사용하고 성능이 좋은 클래스.. 2021. 6. 6. Hash, HashMap에 대하여 Hash란. Key를 고정된 크기의 Value로 저장하는 것. Key의 Hash 값을 사용하여 값을 저장하고 key-value 갯수에 따라 동적으로 크기가 증가하는 associate array. 평균 시간복잡도는 O(1)이다. 원래 데이터의 값을 Key, 매핑 후 데이터의 값을 Hash value, 매핑 과정을 hashing이라 한다. HashMap이란. Map 인터페이스를 구현한 컬렉션 키(Key)와 값(Value)으로 구성된 Entry 객체를 저장하는 구조를 가지는 자료구조 키는 중복 저장 불가능 기존에 저장된 키로 값을 저장하면 기존 값은 없어지고 새로운 값이 저장된다. 값은 중복 저장 가능 선언 및 초기화 val hashmap1: HashMap = HashMap() val hashmap2 = ha.. 2021. 5. 26. [알고리즘] 투포인터(Kotlin) 투 포인터 알고리즘이란 리스트에 순차적으로 접근해야 할 때 2개의 점의 위치를 기록하면서 처리하는 알고리즘이다. 사용 예제 1. 특정한 합을 가지는 부분 연속 수열 찾기 부분 연속 수열의 시작점(start)과 끝점(end)의 위치를 기록 특정한 부분합을 M이라 가정할 때 알고리즘은 아래와 같다. 시작점(start)과 끝점(end)이 첫 번째 원소의 인덱스(0)를 가리키도록 한다. 현재 부분합이 M과 같다면 카운트한다. 현재 부분합이 M보다 작으면 끝점(end)를 1 증가시킨다. 현재 부분합이 M보다 크거나 같으면 시작점(start)을 1 증가시킨다. 모든 경우를 확인할 때까지 2번부터 4번 과정을 반복한다. fun getTwoPointerCount(sum: Int) { val data = arrayOf(.. 2021. 5. 24. java - 배열(Array)에 대하여 배열(Array)이란. 인덱스를 이용하여 자료형 데이터를 관리할 수 있는 공간. 선언 및 초기화 배열 선언 후 인덱스를 통해 값을 지정할 수 있다. 선언은 STACK에서 이루어진다. 실제 배열 생성은 HEAP 공간에서 생성된다. int array[3]; // 크기가 3인 배열 선언(STACK). array[0] = 0; // 값을 할당(HEAP). array[1] = 1; array[2] = 2; 배열 선언과 동시에 값을 지정할 수 있다. int array[3] = {0, 1, 2}; new 를 통해 생성한 경우 Default 0으로 채워진 배열이 생성된다. int[] array = new int[3] 메모리 배열 내의 각 데이터마다 다른 메모리 주소를 갖는다. 각 타입별로 갖는 할당된 메모리 크기 2021. 5. 19. 이전 1 2 다음 728x90