Alternatives to TypeScript enum
Typescript enum
이 쓰레기란 말을 어디서 듣고 와서, 대안을 찾아 보았다.
linear git history
간단히 말하면, git 그래프 모양을 single branch 로 유지하는 것.
Android HashMap vs SparseArray
안드로이드에서 Integer
타입을 key 로하는 HashMap
을 사용하면, SparseArray
를 대신 사용하라는 경고를 준다.
Kotlin Android Extensions
여기서는 확장된 기능 중에 View binding 에 대해서 이야기합니다.
Exception handling for CompletableFuture
CompletableFuture
에서 발생할 수 있는 예외를 처리하는 방법에 대해 이리저리 고민하다 글을 써 본다.
Elliptic-curve cryptography
타원곡선 암호
data class 상속
data class는 final
RSA를 이해해 보자
RSA
JNA 사용 시 데이터 전달 방법
데이터 타입
most vexing parse
C++ Most Vexing Parse
피보나치 수열 총정리
이 글은 피보나치 수열의 n 항을 구하는 여러 가지 방법에 대한 정리 글입니다.
피보나치 수열 일반항 계산
병아리 시절에 이런 댕청한 글을 포스트한 적이 있는데, 반성하는 마음으로 다시 피보나치 수열에 대한 글을 써 본다.
테스트 글쓰기
블로그를 만들어 보았습니다
이 블로그는 이곳을 참조하여 만들었습니다.
binary indexed tree 구현
binary indexed tree 에 대한 설명 :
Modular multiplicative inverse
In modular arithmetic, the modular multiplicative inverse of an integer a modulo m is an integer x such that
dijkstra algorithm and its implementation
더 보기binary heap 구현 시 indexing
binary heap 구현 시, root 를 0 으로 하는 것과 1 로 하는 것의 차이를 보자.
최대 구간 합 문제 (maximum subarray problem)
더 보기n 개 중 m 개 고르는 조합 (all possible combinations)
n 개 가운데 m 개를 고르는 모든 조합
bit operations & twiddling hacks
이 페이지는 bit twidding hacks 에 관한 내용으로, 다음 페이지의 내용 중 일부를 해석, 분석, 시험한 내용입니다. http://graphics.stanford.edu/~seander/bithacks.html
참고 : two’s complement http://en.wikipedia.org/wiki/Two’s_complement
tsp (travelling salesman problem)
1. intro
유명한 문제 tsp 는 링크에서 자세한 설명을. http://en.wikipedia.org/wiki/Travelling_salesman_problem 문제를 요약하자면, n 개의 도시가 주어지고, 각 도시간의 거리가 주어질 때, 모든 도시를 가장 최소의 거리로 이동하는 경로를 찾는 문제이다. 이 문제는 대표적인 NP-Hard 문제이며, time complexity 는 O(2^n) 이다.
2. 풀이
2.1. 모든 경우의 수에 대해 값 구하기
이렇게 하면 물론 안 되겠지만, 모든 경로의 수는 입력 도시 수 n 에 대해서 n ! 이다. 입력이 10 개라면 3,628,800 개이다. 20개라면 ? 2,432,902,008,176,640,000 … 구하기 싫어질 듯. (factorial 에 대해서는 다음 참고 : http://en.wikipedia.org/wiki/Factorial) 이렇게 하면 풀 수 없다는 것만 알고 넘어가자.
sum of subset problem
이것은 대략 숫자의 set 에서 요놈의 부분집합의 합으로 0 을 만들 수 있는 지 여부를 체크하는 문제이다. 예를 들면, 주어진 집합 { −7, −3, −2, 5, 8} 에서 부분집합 { −3, −2, 5} 합은 0 이 될 수 있다.
full search 코드
대략 문제를 풀 때, 하는 수 없이 모든 경우의 수를 뒤져야 하는 경우가 있다. 이런 경우 반복문 또는 재귀(recursion)를 통해 모든 경우의 수를 체크해야 한다. 요런 문제로써, 줄 세우기, n 개 중 m 개 뽑기, 모든 부분 집합 찾기, 트리 탐방 …. 등의 케이스가 있다.
부분 집합 출력하기
집합 S = {0, 1, …, n} 이 있을 때, 모든 부분집합 P(S) 를 출력하는 코드
피보나치 수열 일반항 구하기와 시간 복잡도
보통 피보나치 수열의 일반항은 a0 부터 차례대로 구하는 방법이 있다.