* Computer Science/Algorithm 83

baekjun 9252. LCS2

Longest Common Sequence 메트릭스를 만들고 역으로 올라가서 LCS 문자열을 구하는 문제 1234567891011121314151617181920212223242526272829303132333435#include #include #include using namespace std; int strBoard[1001][1001];string s1;string s2;string getLCS(int i, int j) { if (strBoard[i][j] == 0) return ""; while (strBoard[i][j] == strBoard[i - 1][j]) i--; while (strBoard[i][j] == strBoard[i][j - 1]) j--; return getLCS(i - 1..

baekjun 1520. 내리막 길

내리막길이므로 오는 방향의 캐싱을 고려할 필요가 없다.(어느 방향에서 오든 갈 수 있는 길은 왔던 길의 영향을 받지 않기때문) 12345678910111213141516171819202122232425262728293031323334353637383940#include #include using namespace std; int M, N;int map[500][500];int cache[501][501]; int getDownhillPath(int y, int x) { if (y == M - 1 && x == N - 1) { return 1; } if (y N) return 0; int & ret = cache[y][x]; if (ret != -1) return ret; ret = 0; if(map[y ..

baekjun 2293. 동전1

첫 번째는 재귀로 짰다가 메모리 공간을 줄일 방법을 못찾아서 이터레이션으로 바꾼 문제. int 1000만개에 40mb이므로 10000 * 100은 100만이니 4mb를 넘는다는 사실을 알 수 있다. 따라서 배열을 줄여야하는데 그에 대한 방법은 아래와 같다. 1 1+1 2 1+1+1 1+2 3 1+1+1+1 1+1+2 1+3 4 1234567891011121314151617181920212223242526272829303132#include using namespace std; int N, K;int coins[101];int D[10001]; /*D(i, k) = { D(i -1, k) if C(i) = K}*/ int main() { cin >> N >> K; for (int i = 1; i > coi..