동적 계획법 2

제곱수의 합

문제 숫자 N을 제곱수의 합으로 표현하고자 할 때, 사용해야 하는 제곱 수의 최소 개수를 출력하는 프로그램을 작성하시오. 예를 들어, 숫자 45를 제곱수의 합으로 표현하고자 할 때 필요한 제곱 수의 최소 개수는 2개이며, 이는 다음과 같다. 45 = 3^2 + 6^2 입력 첫 번째 줄에 N이 주어진다. ( 1 ≤ N ≤ 100,000 ) 출력 필요한 제곱 수의 최소 개수를 출력한다. 예제 입력 45 예제 출력 2 예제 입력 38 # 풀이 우선 문제의 규칙은 이렇다 dp[0] = 0 dp[1] = 1^1 dp[2] = 1^1 + 1^1 dp[3] = 1^1 + 1^1 + 1^1 dp[4] = 1^1 + 1^1 + 1^1 + 1^1 or 2^2 … dp[7] = 2^2 + 1^1 + 1^1 + 1^1 dp[..

카드 놀이

문제 N개의 카드가 주어지고, 각각은 자연수의 점수를 가진다. 철수는 이제 이 카드를 가져감으로써 카드에 적혀있는 수 만큼의 점수를 얻는다. 단, 카드를 가져갈 때 한가지 규칙이 있는데, 이는 연속하여 3개의 카드는 가져갈 수 없다는 것이다. 예를 들어, 6개의 카드 “1 3 5 2 7 3”가 주어질 경우, 3+5+7+3 = 18 만큼의 점수를 얻는 것이 최대이다. N개의 카드가 주어질 때, 얻을 수 있는 점수의 최댓값을 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에 N이 주어진다. ( 1 ≤ N ≤ 100,000 ) 두 번째 줄에 N개의 숫자가 주어지며, 이는 각 카드의 점수를 나타낸다. 출력 얻을 수 있는 점수의 최댓값을 출력한다. 예제 입력 6 1 3 5 2 7 3 예제 출력 18 # 정리....

반응형