코딩 (102) 썸네일형 리스트형 백준 9252 LCS2 #include #include #include #include using namespace std; char s1_arr[1001]; char s2_arr[1001]; int memo[1001][1001]; int main() { cin >> s1_arr >> s2_arr; int s1Size = strlen(s1_arr); int s2Size = strlen(s2_arr); for (int i = 1; i 백준 1932 숫자삼각형 #include #include using namespace std; int triangle[501][501]; int dp[501][501]; int triSize; int solve(int i, int j) { int& ret = dp[i][j]; if (ret > -1) return ret; if (i == triSize - 1 && j == triSize - 1) return ret = triangle[i][j]; return ret = max(solve(i + 1, j), solve(i + 1, j + 1)) + triangle[i][j]; } int main() { cin >> triSize; for (int i = 0; i < triSize; i++) for (int j = 0; j < tr.. 백준 9461 파도반수열 #include #include using namespace std; long long p[101]; int main() { p[0] = 1; p[1] = 1; p[2] = 1; p[3] = 2; p[4] = 2; for (int i = 5; i > testcase; while (testcase > 0) { testcase--; int n = 0; cin >> n; cout 백준 1912 연속합 #재채점으로 오답이 나신분들이 검색으로 이 글을 많이 들어오시는 것 같다. 이 해법은 테스트케이스가 추가된(17년 12월쯤..) 후에도 정답이니, 걱정마시고 참고하시면 될거 같다. #이렇게 접근 했다. 1. 숫자를 0번부터 차근차근 더해가면서 memo배열에 현재까지의 합을 기록한다. 2. 더해가다가 memo에 음수를 기록하게 되면 그 다음 부터는 합을 0으로 초기화하고 다시 더한다 3. 1~2번 작업을 끝까지 마친 후 memo의 값중 최대값을 출력한다. 이 알고리즘을 요약하면, '합이 음수가 되는 지점이 생기면 그 이전의 숫자는 모두 신경 쓰지 않는다' 이다. 최적화를 조금 해보면 memo를 사용 하지 않고 그냥 최대값만 저장하는 변수 하나만 쓰면 되고, 숫자를 더할때도 입력받으면서 바로바로 더하면 된다.. 백준 2965 캥거루 세마리 #include #include using namespace std; int main() { int a, b, c; cin >> a >> b >> c; cout 백준 11066 파일 합치기 #include #include using namespace std; int testcase; int fileSize[501]; int sum[501]; int dp[501][501]; const int intmax = 2100000000; void initData() { for (int i = 0; i < 501; i++) { fileSize[i] = 0; sum[i] = 0; for (int j = 0; j < 501; j++) { dp[i][j] = 0; } } return; } int solve(int i, int j) { if (i == j) return 0; int minResult = intmax; for (int k = 0; k < abs(i - j); k++) { minResult = m.. 백준 9251 LCS #include #include #include using namespace std; char s1_arr[1001]; char s2_arr[1001]; int memo[1001][1001]; int main() { cin >> s1_arr >> s2_arr; int s1Size = strlen(s1_arr); int s2Size = strlen(s2_arr); for (int i = 1; i 백준 1520 내리막 길 부제 : 아주 스트레스 받은 문제 #include using namespace std; int height[501][501]; int memo[501][501]; int i_length, j_length; int pX[4] = { -1, 1, 0, 0 }; int pY[4] = { 0, 0, -1, 1 }; int solve(int x, int y) { int& memoRef = memo[x][y]; if (x == i_length - 1 && y == j_length) return 1; if (memoRef =! -1) return memoRef; int i, j; memoRef = 0; for (int k = 0; k < 4; k++) { i = x + pX[k]; j = y + pY[k]; if (.. 이전 1 ··· 9 10 11 12 13 다음