전체 글 593

[Spring Data JPA] 3-7. Repository query keywords

1. Supported query method subject keywordsfind…Byread…Byget…Byquery…Bysearch…Bystream…ByGeneral query method - can be used in combination with additional keywordsReturn type: the repository type- Collection, Streamable subtype, result wrapper (Page, GeoResults, store-specific)exists…ByExists projectionReturn type: booleancount…ByCount projectionReturn type: booleandelete…Byremove…ByDelete que..

[고급 알고리즘] Dynamic Programming: Travelling salesman problem

1. Travelling salesman problem 여러 도시들이 있고 한 도시에서 다른 도시로 이동하는 비용이 모두 주어졌을 떄, 모든 도시들을 단 한 번만 방문하고 원래 시작점으로 돌아오는데 드는 최소 거리 구하기 그래프 이론 각 변에 가중치가 주어진 완전 그래프에서 가장 작은 가중치를 가진 해밀턴 순환 구하기 2. brute-force (permutation. NP) time complexity $O(n!)$ 3. dynamic programming (Held-Karp algorithm) 동작 원리 초기화 모든 도시를 1부터 n까지 번호 매기기 임의의 도시를 시작점으로 선택 상태 정의 $g(S, e)$ : 출발지에서 S에 포함된 모든 도시를 거쳐 e에 도달하는 최단 경로의 길이 최솟값 계산 (재..

Algorithm 2024.03.01

[고급 알고리즘] Dynamic Programming: String

1. Longest Common Subsequence (LCS. 최장 공통 수열)두 수열의 공통 부분 수열 중, 가장 긴 수열을 찾는 문제입니다. 부분 수열주어진 수열에서 몇 개의 원소를 선택해 만든 수열원소의 순서는 원래 수열에서의 순서를 유지해야 함 점화식${\displaystyle LCS\left(X_{i},Y_{j}\right)={\begin{cases}\emptyset &{\mbox{ if }}\ i=0{\mbox{ or }}j=0\\{\textrm {}}LCS\left(X_{i-1},Y_{j-1}\right)+1&{\mbox{ if }}x_{i}=y_{j}\\{\mbox{longest}}\left(LCS\left(X_{i},Y_{j-1}\right),LCS\left(X_{i-1},Y_{j}\r..

Algorithm 2024.03.01

[고급 알고리즘] Dynamic Programming: Knapsack Problem

1.  Knapsack Problem (배낭 문제)베낭에 담을 수 있는 최대 무게가 정해져 있고, 무게와 가치가 있는 짐들을 배낭에 넣을 때 가치의 합이 최대가 되도록 짐 채우기 0-1 Knapsack Problem각 짐을 한 번만 선택할 수 있음각 짐을 넣거나 넣지 않는 선택을 할 수 있음 점화식$m[0, w] = 0$$m[i, w] = m[i-1, w] \quad \text{if } w_{i} > w$$m[i, w] = \max(m[i-1, w], m[i-1, w-w_{i}] + v_{i}) \quad \text{if } w_{i} \leqslant w$ 2. 풀이코드costs = new int[N+1];volumes = new int[N+1];dp = new int[N+1][K+1];for (int..

Algorithm 2024.03.01

[고급 알고리즘] Dynamic Programming: Fibonacci

1. Fibonacci (피보나치 수열)직전 두 항의 합인 수열입니다. (첫째항과 둘째항은 1) 점화식$fib(n) = fib(n-1) + fib(n-2)$ 예시: $fib(5)$$fib(4)+fib(3)$$(fib(3)+fib(2)) + (fib(2)+fib(1))$$((fib(2)+fib(1)) + (fib(1)+fib(0))) + ((fib(1)+fib(0)) + fib(1)$$(((fib(1)+fib(0)) + fib(1)) + (fib(1)+fib(0))) + ((fib(1)+fib(0)) + fib(1))$ 2. 풀이 코드더보기public int fibDP(int n) { if (n == 0) return 0; if (n == 1) return 1; if (memo[n]..

Algorithm 2024.03.01

[기초 알고리즘] 수학: 멱집합

1. 멱집합 (Power Set)임의의 집합 S에서 모든 부분 집합들로 구성된 집합입니다.${\displaystyle {\mathcal {P}}(S)=\{A\colon A\subseteq S\}}$ 코드더보기private void powerset(int depth) { if (depth == size) { List temp = new ArrayList(); for (int i = 0; i  예${\displaystyle \{a,b\}}$의 멱집합${\displaystyle {\mathcal {P}}(\{a,b\})=\{\varnothing ,\{a\},\{b\},\{a,b\}\}}$ ${\displaystyle \{a,b,c\}}$의 멱집합${\displaystyle {\m..

Algorithm 2024.02.25

[기초 알고리즘] 수학: 조합

1. K-Combinationk개의 원소들을 사용해서, 순서를 고려하지 않고 배열한 모든 경우의 수 순열의 수${\displaystyle C(n,r)={\frac {n(n-1)\cdots (n-r+1)}{r!}}={\frac {n!}{r!(n-r)!}}}$ 성질대칭성n개의 원소에서 r개를 선택하는 것과 (n-r)개를 선택하는 방법의 수가 동일합니다.${\displaystyle {\binom {n}{r}}={\binom {n}{n-r}}}$ 재귀적 (파스칼의 삼각형)두 집합의 합원래 집합에서 하나의 원소를 제외하고, r개를 선택하는 방법의 수원래 집합에서 하나의 원소를 제외하고, r-1개를 선택하는 방법의 수${\displaystyle {\binom {n}{r}}={\binom {n-1}{r}}+{\bi..

Algorithm 2024.02.25

[기초 알고리즘] 수학: 순열

1. Permutation집합의 원소들을 모두 사용하여 순서를 고려하여 배열한 모든 경우의 수 전단사 함수정의역과 공역이 같습니다. 순열의 수${\displaystyle n!=n(n-1)(n-2)\cdots \cdot 2\cdot 1}$ 예좌석 배치(1,2,3,4)(2,1,3,4)(3,1,2,4)(4,1,2,3)(1,2,4,3)(2,1,4,3)(3,1,4,2)(4,1,3,2)(1,3,2,4)(2,3,1,4)(3,2,1,4)(4,2,1,3)(1,3,4,2)(2,3,4,1)(3,2,4,1)(4,2,3,1)(1,4,2,3)(2,4,1,3)(3,4,1,2)(4,3,1,2)(1,4,3,2)(2,4,3,1)(3,4,2,1)(4,3,2,1)  2. K-Permutation서로 다른 n개의 원소 가운데 유니크한 k개를..

Algorithm 2024.02.25