문제 문제 설명 오늘도 서준이는 최소 힙 기반 힙 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 힙 정렬로 배열 A를 오름차순 정렬할 경우 배열 A의 원소가 K 번 교환된 직후의 배열 A를 출력해 보자. 크기가 N인 배열에 대한 힙 정렬 의사 코드는 다음과 같다. heap_sort(A[1..n]) { # A[1..n]을 정렬한다. build_min_heap(A, n); for i
개요 - LinkedList란? LinkedList란 말 그대로 Link되어 있는 List라는 뜻이다. LinkedList의 한 원소는 노드(node)라고도 하며, 하나의 노드에는 value와 pointer가 존재한다. value에는 초기에 넣은 값이 존재하며, pointer는 다음 노드를 가리키게 된다. LinkedList는 선형과 원형 2가지의 형태가 존재하는데, 마지막 노드의 pointer값이 null인 경우는 선형 LinkedList, 마지막 노드의 pointer값이 맨 앞의 노드를 가리킨다면, 꼬리를 무는 형태가 되어 원형 LinkedList라고 한다. 자바에서는 CircularLinkedList는 구현되어 있지 않으므로, 궁금하다면 검색을 통해 공부하는 것이 좋을 것같다. LinkedList에..
개 요 - HashMap이란? 자바에서의 HashMap이란 Python의 Dictionary, JavaScript의 Json과 비슷한 형태로, Key와 Value가 한 쌍을 이뤄 저장되는 자료구조의 한 종류로 Map Interface를 상속받아 정의되어 있다. HashMap에서 데이터를 저장할 때는, Key로 들어오는 데이터를 hash함수를 통해 해싱하고 해당 인덱스에 Value로 들어온 값을 저장하게된다. 데이터를 조회할때는 Key 값만을 넣어서 조회하는데, 이때도 들어온 Key 값을 해싱해서 해당 구조에서 데이터를 조회하기때문에 보다 빠르게 데이터를 조회할 수 있다. 특징 Key,Value 구조로 이루어져있다. Key값은 중복이 안되며, Value 값은 같아도 Key값이 다르다면 중복이 가능하다. 해..
개요 Array는 단어 그대로 어떤 줄을 의미한다. 자바에서의 Array는 특정 타입들이 들어있는 자료구조를 의미한다. 동일한 자료형의 데이터를 연속된 공간에 저장하기 위한 자료구조이다. 연관된 데이터들을 하나로 묶어준다는 뜻이다. 해당 포스팅에서는 장점 및 단점, 선언과 간단하게 메서드들을 알아볼 예정이다. 특징 배열의 장점은 연관된 데이터를 저장하기 위한 변수의 선언을 줄여주며, 반복문 등을 통해서 계산과 같은 과정을 쉽게 할 수 있게한다. 단점이 있다면, 초기에 배열을 선언할 때 정해진 크기가 고정되어, 배열의 원소 추가나, 삭제가 용이하지 않다. 구현 // 배열 사이즈 정의 int size = 5; // int array int[] int_arr1 = new int[size]; int[] int_..