기타 8

[자료구조] UnionFind 알고리즘

1일 1코딩테스트를 풀어보려고 노력하고 있습니다. Leetcode에서 진행 중이며 금일 푼 문제에서 UnionFind 문제가 있어 정리를 해보고자 작성합니다. UnionFind 알고리즘 UnionFind 알고리즘은 대표적인 그래프 알고리즘으로 서로소 집합(Disjoint-Set)알고리즘으로도 불린다. 여러개의 노드가 존재 할 때 두 노드를 선택하여 같은 그래프에 있는지 판별하는 알고리즘이다. 설명 아래와 같이 1번부터 6번까지의 노드가 있다. 위의 노드들은 연결 되기 전에 아래와 같이 윗칸은 노드 번호 아랫칸은 부모 노드를 뜻한다. (초기화 단계) 노드 번호 1 2 3 4 5 6 부모 노드 1 2 3 4 5 6 위의 노드들을 아래와 같이 2개의 그래프처럼 연결시켜 보려고 한다. 먼저 1, 2번 노드를 연..

기타 2022.04.27

[자료구조] LSM(Log-Structured Merge-Tree) 트리

우리팀에 같이 있는 Kenny가 추천해준 책(데이터 중심 애플리케이션 설계)을 보면서 유용한 정보를 알게 되어 정리할 겸 작성한다. 데이터 저장과 관련해서 LSM 트리와 B 트리 라는 구조가 나온다. 오늘은 LSM 트리에 대해 알아보도록 한다. LSM 트리(Log-Structured Merge-Tree) 현재 우리팀에서 사용하고 있는 ElasticSearch를 사용하면서 알게 된 내용이 있었는데 그것은 바로 데이터를 세그먼트라는 단위의 파일로 관리를 하고 있는 것이였다. 세그먼트 파일은 일정 시간 마다 백그라운드로 Merge라는 작업을 통해 작게 조각 나있는 조각들을 합치고 있는데 바로 이 개념이 LSM 트리였다. 여기서는 Merge가 아니라 ①컴팩션이라고 부른다. (실은 ElasticSearch에서 사..

기타 2022.04.20

[자료구조] 이진 탐색 트리 (BST)

1일 1코딩테스트를 풀어보려고 노력하고 있습니다. Leetcode에서 진행 중이며 금일 푼 문제에서 이진 탐색 트리 문제가 있어 정리를 해보고자 작성합니다. 이진 탐색 트리 이진 탐색 트리란 정렬된 이진트리로 다음과 같은 속성을 가지고 있다. Root 노드 왼쪽에는 해당 노드의 값보다 작은 값의 노드만 포함 된다. Root 노드 오른쪽에는 해당 노드의 값보다 큰 값의 노드만 포함된다. 왼쪽, 오른쪽 하위 노드도 각각 이진 검색 트리여야 한다. 중복된 키는 허용하지 않는다 문제는 다음과 같습니다. You are given the root of a binary search tree (BST) and an integer val. Find the node in the BST that the node's valu..

기타 2022.04.15

Mac Os에 MariaDB 설치하기

오늘은 개발의 스타트 로컬환경에 Database를 설치해보겠다. 오늘 설치할 DB는 무려 MariaDB이다. MariaDB의 경우 무료이면서 기존에 MySql팀에서 만든 DB라 MySql과 사용법도 거의 동일하다. Mac에서는 아주 간단히 Homebrew로 설치할 수 있다. 설치 zzangho  ~  brew install mariadb Running `brew update --preinstall`... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/core). ==> Updated Formulae Updated 100 formulae. ... To restart mariadb after an upgrade: brew services restart mari..

기타 2022.03.04

Comparable 과 Comparator

이번에 알아두면 좋을 것을 발견하여 이렇게 정리를 해본다. 기존에 배열을 정렬 할 경우 for문을 2번 돌린다 Arrays.sort를 사용 Stream API를 이용 보통 위의 3가지 방법으로 많이 사용하였는데 Comparator를 사용하여 정렬을 하는 방법을 알게 되었다. 일단 진행하기에 앞서 Comparable과 Comparator는 인터페이스(interface)이다. 이 말은 사용하려면 인터페이스 내에 선언된 메소드를 '반드시 구현'해야 한다. 각각 Java doc을 한번 보자 [Comparable] https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html#method.summary Comparable (Java Platform SE ..

기타 2022.02.23

Java 제곱, 제곱근 구하는 방법

중학교때 수학을 포기하였지만(수포자...) 생각보다 수학적 지식이 지금에서는 많이 필요하다는 것을 깨닫고 있다. 살려줘~~ 먼저 정의를 한번 살펴보자! 위키백과를 한번 뒤져보자 위키백과에서는 다음과 같이 정의를 하고 있다. 제곱이란? 수학에서 거듭제곱(승멱乗冪 또는 멱冪, 영어: exponentiation)은 같은 수를 거듭하여 곱한 것으로, 주어진 수를 주어진 횟수만큼 여러 번 곱하는 연산이다. 요약 하자면 2의 3제곱이면 2*2*2 를 한다는 것이다. 그럼 자바에서 제곱값을 구하는 방법을 한번 알아보도록 하자. 자바에서 제공하는 Math 클래스의 pow함수를 사용하면 간단히 제곱값을 구할 수 있다. public class Sqrt { public static void main(String[] args..

기타 2022.02.22

3진법 구하기

이번에 3진법을 구하는 공식을 알게 되어 기록용으로 써본다. (학창시절 일찍이 수포자인 나에게는 2진법도 힘들다.......) 3진법 구하려면? Youtube를 참고해 보니 2진법의 경우 정수를 2로 끝까지 나누었을 때 나오는 나머지들과 몫을 이어 주면 된다고 한다. 2진법은 2로 나누면 3진법은 3으로 나누면 된다고 한다. 그럼 0, 1, 2 이 세가지 숫자중에 하나로만 떨어질 것 이다. 예시를 보면 45라는 숫자를 2진법, 3진법으로 바꾸었을 때 2진법 나누는 값 정수 나머지 2 45 2 22 1 2 11 0 2 5 1 2 2 1 2 1 0 이렇게 될 경우 101101 이 된다. 3진법 나누는 값 정수 나머지 3 45 3 15 0 3 5 0 3 1 2 이렇게 될 경우 1200 이 된다. 오늘도 지식 ..

기타 2022.02.12

IntelliJ에서 Java실행이 되지 않을때?

금일 집에서 테스트 중이던 소스를 github에 올렸는데 그 뒤에 기존 소스를 삭제하고 새로 clone을 받은 뒤 다시 프로젝트를 열어보니 응????????? 뭔가 파일이 이상함을 느꼇다. Tool에서 이런 빨간색 표시가 뜨면 일단 뭔가 이상한거라고 생각하던 나는 java파일을 하나 열어 실행을 해보았는데 웬걸 실행 화살표가 보이지 않는다. 분명 저 빨간색 테두리 위치에 초록색의 화살표 아이콘이 보여야 하는데 보이지 않고 있었다. 문제 해결을 위해 열심히 구글링을 해보니 다음과 같이 셋팅을 하면 된다는 글을 보았다. src 디렉토리 우클릭 -> Mark Directory as -> Sources Root 위와 같이 따라하니 다시 정상적으로 파일 아이콘도 돌아오고 화살표 버튼도 다시 보이게 되었다. 위와 ..

기타 2022.02.08