목록Algorithm (10)
말랑한 하루
단어가 일치하는지 확인하는 개념은, 연속 부분 문자열인 Substring이며 연속되지 않는 부분 문자열을 Subsequence라고 한다. 기본 구현 과정 1) 첫번째 행과 열을 0으로 맞춘다 2) 기준이 되는 열에 행의 문자를 넣고, 문자가 일치하면 행렬값에 1을 더한다 3) 행 테이블의 값은 이전 테이블 값의 누적된 값이 기록되며, 새롭게 매칭되는 문자가 나왔을 때 다음을 생각한다 ☆ 3-1) 현재 서로다른 문자열인 경우, 현재 테이블에 들어갈 수는 (왼쪽or위쪽중 큰 값)을 따라간다 ☆ 3-2) 현재 서로같은 문자열인 경우, 현재 테이블에 들어갈 수는 (왼쪽위 대각선 값 + 1)이다 4) LCS의 최종 길이는 행렬의 마지막 부분인 (r-1,c-1)의 값이다 void LCS() { string R, C..
유클리드 호제법을 이용해 최대공약수와 최소공배수를 구하는 기본 알고리즘이다 1. 큰 숫자를 작은 숫자로 mod연산 2. 작은 숫자를 1.의 결과와 mod연산 3. mod연산 결과가 0이 나올때 까지 2.과정을 반복 4. mod연산 결과가 0이 나왔을 때, 나누는 수가 두 수의 [최대공약수] 5. 두 수를 곱한 수를 최대공약수로 나누면 [최소공배수] // 최대공약수: Greatest Common Division int gcd(int a, int b) { int c = a % b; while (c != 0) { a = b; b = c; c = a % b; } return b; } // 최소공배수: Least Common Multiple int lcm(int a, int b) { return (a * b) /..