다이나믹 프로그래밍 22

[DP] BOJ 1699 제곱수의 합

https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 문제 해결 알고리즘 수의 제곱수의 최소 개수를 구할 때 그 수에서 제곱수만큼 뺀 숫자들 중에서 제곱수의 개수가 최소인 수의 제곱수의 개수에서 +1 한 만큼의 값을 입력해준다. 답을 구할 때까지 계속 반복 후 N까지 구했을 때 출력해준다. 소스 코드 #include using namespace std; int dp[100002]; int main(){ int ..

[DP] BOJ 2579 계단 오르기

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 알고리즘 문제 해결 동적계획법(다이나믹 프로그래밍)을 쓰는 문제 연속된 세 개의 계단을 밟을 수 없으므로 이차배열을 선언해준다. 연속으로 밟은 계단의 갯수를 배열로 알 수 있게 설정한다. 만약 2개의 계단을 밟았을 경우 두 칸을 넘게 한다. 반복문이 끝난 후, 마지막으로 N번째 행에서 최댓값을 구해서 출력한다. 소스 코드 #include using namespace std; int main(){ int N; ..