* Computer Science/Algorithm 83

baekjun 10844. 쉬운 계단 수

계단을 오를 때 integer overflow를 방지하기 위하여 나머지를 더하는 문제. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include using namespace std; int N;int cache[101][10]; int letsBin(int level, int last) { if (level == N) return 1; int & ret = cache[level][last]; if (ret != -1) return ret; ret = 0; if (last == 0) { ret += letsBin(level + 1, last + 1); ret %= 1000000..

baekjun 1005. ACM Craft

최솟값을 찾아라면서 최대값을 찾는 문제. 문제를 풀면서 자료구조의 범위 지정에 신경쓰는 연습을 해야할듯 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include #include int N, K;int minTimes[1001];int cache[1002];int connect[1001][1001];int target; using namespace std; int getMinCraft(int target) { int &ret = cache[target]; if (ret != -1) return ret; ret = minTimes[target]; for (int i = 1; i > case..

baekjun 2579. 계단 오르기

계단을 오를 때 어디서부터 오를 것인지, 오를 때 3칸 연속 오르면 안되기에 이를 처리해주는 곳만 있다면 해결할 수 있다. 12345678910111213141516171819202122232425262728293031323334353637383940#include #include #include #define LOWEST -3000000 using namespace std; int N;int steps[301];int cache[302][2]; int getMaxStep(int level, int ctn) { if (level == N) return steps[N]; if (level > N) return LOWEST; int locCtn = ctn; if (locCtn > N; memset(cache..

baekjun 1149. RGB거리

RGB거리, 처음엔 재귀와 메모이제이션으로 풀었다가 시간초과가 나서 현재값이 선택되었을 때 앞에 값 중 최소값과 더해서 나가는 형식으로 수정하니 O(N)으로 들어온다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include #include #define HMAX 1000#define MAX 0x12345678using namespace std; int RGB[HMAX][HMAX];int cache[HMAX][HMAX + 1];int D[HMAX][HMAX];int N; int minRGB(int start, int prev) { if (N == start) return 0;..

baekjoon 1003. 피보나치 함수

어떤 문제든 하루에 한 문제만 꾸준히 풀기로~ fibonacci basic 문제ref : https://www.acmicpc.net/problem/1003123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include using namespace std; int cache[41];int fibonacci(int n) { int & ret = cache[n]; if (ret != -1) return ret; if (n == 0) { return 0; } else if (n == 1) { return 1; } else { ret = fibonacci(n - 1) + fibonacci(n - 2);..