백준 1309 동물원
1234567891011121314151617181920212223// 다시 풀기(힌트 얻어서 품) // d[i][0] = 2*i에 사자를 배치하되 마지막 칸에는 배치하지 않는 경우// d[i][1] = 2*i에 사자를 배치하되 마지막 칸 왼쪽에 배치하는 경우// d[i][2] = 2*i에 사자를 배치하되 마지막 칸 오른쪽에 배치하는 경우 #include using namespace std; int n, d[100001][3]; int main() { scanf("%d", &n); d[0][0] = 1; for (int i = 1; i백준 1965 상자넣기
1234567891011121314151617181920212223242526272829303132333435// 다시 풀기 // D[i]를 뭘로 놓냐가 핵심 ! // 처음 접근할 때 D[i]를 A[i]까지 검사했을 때 가장 긴 부분 수열의 길이// 로 설정했더니 안 풀림. // D[i] = A[1], , , A[i] 까지 수열이 있을 때, A[i]을 마지막으로 하는// 가장 긴 증가하는 부분 수열의 길이. #include #include // *max_element()를 이용하기 위함.#include using namespace std; int main() { int n; scanf("%d", &n); vector a(n); for (int i = 0; i백준 9251 LCS
123456789101112131415161718192021222324252627// 다시 풀기 #include #include #include #include #include using namespace std; string s1, s2;int d[1001][1001] ; int dp(int a, int b) { if (a s1; cin >> s2; memset(d, -1, sizeof(d)); printf("%d\n", dp(s1.size() - 1, s2.size() - 1)); return 0;} Colored by Color Scriptercs 내겐 상당히 까다로웠던 문제. Top-Down 방식의 DP로 접근. 1. string으로 문자열 입력받기 string대신에 char s1[1001]로 입..백준 2163 초콜릿 자르기
12345678910111213141516171819202122// 12분#include using namespace std; int d[301][301]; int dp(int n, int m) { if (d[n][m] > 0) return d[n][m]; if (n == 1 && m == 1) return 0; if (n == 1) return d[n][m] = dp(n, m / 2) + dp(n, m - m / 2) + 1; else return d[n][m] = dp(n / 2, m) + dp(n - n / 2, m) + 1;} int main() { int n, m; scanf("%d %d", &n, &m); printf("%d\n", dp(n, m)); return 0;} Colored by C..백준 1003 피보나치 함수
방식 n은 최대 40까지이므로 for문을 돌려 40까지의 답을 구해 놓은 후 풀었다. 1234567891011121314151617181920212223#include using namespace std; int d[41][2]; int main() { d[0][0] = d[1][1] = 1; d[0][1] = d[1][0] = 0; for (int i = 2; i 0) return d[n]; if (n == 0) return 0; else if (n == 1) return 1; else { return d[n] = fibonacci(n - 1) + fibonacci(n - 2); }} int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%..jayharvey
머신러닝/딥러닝 관련 글을 포스팅할 예정입니다 :)