동적 계획법2 [백준 2579/c++] 계단 오르기 다이나믹 프로그래밍을 이용한 문제이다 특이사항으로 1칸, 2칸 씩만 오를 수 있지만 1칸이 연속되면 안된다는 조건이 걸려있다 1칸 연속이 허용되지 않으면 1칸 2칸 혹은 2칸 1칸 혹은 2칸 2칸 의 순으로 가야되는 것인데 2-1 / 1-2 의 경우는 조건에 맞지 않아 문제가 생긴다 1의 위치가 뒤 앞으로 정해지지 않았을때 생기는 문제이니 1 이후에 2가 무조건 오거나 2 이후에 1이 무조건 오도록 오르게 하면 해결된다 하지만 1이후에 2가 무조건 오게 하는 방법은 1만큼 오르는 것이 필수가 아니므로 1-2 / 2-1 / 2- 2 중 일반화 했을때 1이 먼저 오는 1-2 의 경우는 2-2 를 나타내기 힘드므로 2가 먼저 오게 해서 2 이후에 1이 오는 경우, 안오는 경우 2가지만으로 하여 오르는 방법이 .. 2022. 7. 19. [백준 2748/c++]피보나치 수 2 이전 수와 현재 수를 더해서 다음 수를 만들어 내는 수열을 피보나치 수열이라고 한다 피보나치 수열은 다이나믹 프로그래밍 = 동적 계획법 의 분류에 해당되는데 스스로 재귀하며 답을 도출해내는 과정에서 이전의 계산한 결과는 배열에 넣어서 매번 따로 계산 없이 배열에서 이전 결과값을 그대로 가져와 사용하여 효과적으로 계산할 수 있다 벡터를 이용해서 풀었지만 수가 워낙 크다보니 배열이 많이 필요하지 않아서 앞으로는 간단히 정적 배열로 풀어도 될 것같다 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으.. 2022. 7. 17. 이전 1 다음