Comparator / Comparable 비교 해보기
study/java 2022. 6. 1. 23:47

Comparable 인터페이스 https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html 정렬 수행 시에, 기본적으로 적용되는 정렬의 기준이 되는 메서드를 정의하는 인터페이스 사용 방법 Comparable 인터페이스를 구현한 뒤에, 내부에 있는 compareTo 메서드를 원하는 정렬 기준대로 구현하여 사용한다. class Student implements Comparable { int grade; // compareTo 메서드 오버라이드 @Override public int compareTo(Student anotherStudent) { return Integer.compare(grade, anotherStudent.grade); } } 생성..

데이터 웨어하우스/데이터 마트/데이터 레이크 란?
study/bigdata 2022. 5. 20. 14:58

데이터 웨어하우스(Data Warehouse) 데이터(정보) + 웨어하우스(창고) 의 합성어이다. 여러 데이터 소스로들로부터, ETL 과정을 거쳐 하나의 통합된 데이터 창고를 구축한다. 이름에 볼 수 있듯이, 데이터 웨어하우스는 많은 양의 데이터를 오랫동안 보관하는 것에 최적화되어있다. 데이터 웨어하우스에는 업무적으로 중요한 데이터가 저장되고, 전사적인 관점에서 통합하여 관리된다. 따라서 데이터 웨어하우스의 데이터를 아무때나 함부로 사용하는 것은 좋지 않다. 데이터 마트(Data Mart) 따라서 데이터 웨어하우스의 데이터를 이용하여 분석 및 개발이 필요할 경우, 필요한 데이터를 추출하여 데이터 마트를 따로 구축한다. 전사적인 데이터를 보관하는 데이터 웨어하우스와 달리, 특정 목적에 따라 추출하여 사용한..

[Java] 백준 10972 - 이론 및 구현해보기
study/algorithm 2022. 5. 4. 15:35

next permutation이란? 보통 순열과 조합을 구현할 때에는 재귀 함수를 사용하여 구현한다. 하지만 재귀적인 함수의 호출은 구하고자 하는 범위가 넓어질 경우 사용하기 힘들다는 단점이 있다. 이런 단점을 해결할 수 있는 것이 next permutation이라는 알고리즘이다. 단순 일차원 탐색을 통해서 순열, 조합을 구할 수 있다는 장점이 있다. 반복문을 통해서 값을 구하기 때문에 원소의 개수가 N이라 할 때 O(N) 만큼의 시간 복잡도를 가진다. 값을 바꿔주는 swap 과정을 거쳐서 순열을 생성하기 때문에 자연스럽게 순열의 순서도 파악할 수 있다는 장점이 있다. 알고리즘 진행 1. 아래와 같은 배열이 주어졌을 때 배열의 맨 뒤에서부터 탐색을 시작하여 N[index] < N[index+1]인 가장 ..

그래프 이론 - BFS/DFS 구현해보기
study/algorithm 2022. 4. 22. 00:50

그래프란? 그래프는 정점(Vertex)들과 간선(Edge)들의 집합으로 구성된 자료구조이다. 정점의 위치나, 간선의 순서들은 그래프를 정의하는 데 사용되지 않는다. 트리도 그래프의 일종이나, 그래프는 트리와 다르게 정점마다 간선을 가지지 않을 수 있다. 그래프는 트리와 다르게 계층 구조의 형태가 아니므로, 역시 노드 간에 부모-자식 계층 관계가 성립하지 않는다. 따라서 루트 노드의 개념도 없다. 그래프의 종류 그래프는 정점이나 간선에 추가적인 속성을 부여하거나, 정점이 존재할 수 있는 방법을 다양하게 함으로써 여러 방식의 그래프로 표현이 가능하다. 방향 그래프( Directed Graph ) 대표적인 그래프의 종류 정점을 잇는 간선들이 방향을 가진다. 위 그림의 첫번째 그래프에서 정점 2와 정점 3을 사..

이진 검색트리(Binary Search Tree) 구현해보기
study/algorithm 2022. 4. 16. 16:30

트리 어떤 계층 구조를 표현하고자 할 때, 트리(Tree)라는 자료구조를 사용할 수 있다. 상위 계층이 아래에 있는 하위 계층들을 포함하며 가지를 치는 모습이 마치 나무와 같다고 하여 트리(Tree)라고 명명되었다 한다. 어떤 데이터로 트리를 구성하느냐, 자료들을 어떻게 배치하느냐에 따라서 다양한 트리를 구성할 수가 있다. 트리의 구성요소 트리는 가질 수 있는 데이터(노드)와 노드들을 연결하는 간선으로 구성된다. 노드가 연결되었을 때, 그 두 노드 간에는 상 하 계층 관계가 성립이 되어야 한다. 트리 용어 부모 노드(parent node) : 연결된 노드 중 상위 노드 하위 노드(child node) : 연결된 노드 중 하위 노드 형제 노드(sibling node) : 부모 노드가 같은 노드 루트 노드(..