다이나믹 프로그래밍dynamic programming작은 문제들을 해결한 다음 이 결과들을 바탕으로 더 큰 문제의 해답을 찾는 방법다시말하면 문제를 작게 나누어 해결 후 그 결과값으로 문제를 해결하는 것 작은 문제의 결과를 가지고 문제 해결 > 결과를 저장하고 있어야 함.따라서 배열 필요문제를 작게 나누어재귀 관계식(점화식)을 만드는게 중요하다이를 이용해 문제를 풀어보자면예시문제2xn 타일링 문제(https://www.acmicpc.net/problem/11726) 작은 단위 부터 차근차근 위로 올라가면 하나의 규칙을 찾을 수 있다.그 규칙으로 점화식을 만들면f(n) = f(n-1)+f(n-2)이라는 점화식이 나오고 이를 이용해 전체 문제를 해결하면 된다.
7월 3쨰주 황상진 그릇(재밌네요) 우선 문제를 보면 그릇을 쌓고 그 그릇들의 높이를 계산하는 알고리즘 입니다 ((이렇게 같은 방향으로 쌓으면 5가 더해지고 ()다른 방향으로 쌓으면 그릇의 원래 높이인 10이 더해집니다 때문에 문자열을 입력 받고 그 문자열들을 행렬에 각각 대입하고 비교하여 더했습니다. #include #pragma warning (disable : 4996) using namespace std; int main() { int i, sum = 0; char bowls[50] = { 0, }; for (i = 0; i < 50; i++) { scanf("%c", &bowls[i]); if (bowls[i] == '\n') break; } for (i = 0; i < 50; i++) { if..
7월 5째주 과제 소수의 연속합 황상진 가장먼저 소수의 연속합을 구하려면 소수를 구해야합니다. 소수는 primenumber라는 함수에서 구했습니다. 그후 2부터 하나씩 증가하면서 소수의 합을 구했습니다 그러나 이러한 과정에서 오류가 발생했습니다. 예를 들어, 소수합이 41인 경우 2 3 5 7 1111 13 1741 이렇게 3가지 경우가 있는데 제 코드에 의하면 8 9 10 11 모두 소수의 합이 41이 되는 오류가 있었습니다. 그래서 소수의 수를 카운트하는 변수를 만들어서 만약 소수의 변수들의 개수가 같으면 넘어가는 방법으로 문제를 해결했습니다 #include #pragma warning (disable : 4996) using namespace std; int primeNumber(int); int ..
사실 별다른 풀이는 없습니다.문제에서 원하는 대로 기능을 반복해서 카운트를 하는 것 입니다. #include //황상진 #pragma warning (disable : 4996) using namespace std; int main() { int num;//처음 저장 받는 수 저장 int ten = 0,one = 0;//10의 자리수, 1의 자리수 int temp = 0;//임시저장 변수 int count = 0;//카운트 int k; scanf("%d", &num); ten = num / 10;//십의 자리수에 저장 one = num - ten*10;//일의 자리수에 저장 for (count = 0; num != temp; count++) { temp = one * 10 + (one..