본문 바로가기

dp3

[백준] 2748번 : 피보나치 수 2 | int & long long 범위 (C++) 문제 풀이 아래에 첨부한 2747번 문제와 같은 방식으로 풀이했다. 두 문제의 차이점은 n의 범위이다. 2747번 문제는 n의 최댓값이 45이지만, 이 문제는 90이기 때문에 DP를 int 형으로 선언하면 오류가 발생한다. n = 90일 때, 피보나치 수는 288,0067,1943,7081,6120이기 때문에, DP를 long long 형으로 선언했다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이며, long long의 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807이다. [백준] 2747번 : 피보나치 수 - (C++) 문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경.. 2023. 5. 24.
[백준] 2747번 : 피보나치 수 - (C++) 문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경우, 피보나치 수는 11,3490,3170이다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이므로, 피보나치 수의 최댓값이 범위 내에 있기 때문에, DP를 int로 선언했다. 코드 #include using namespace std; int main() { int n; int DP[45]; cin >> n; DP[0] = 0; DP[1] = 1; for (int i = 2; i 2023. 5. 24.
[백준] 2775번 : 부녀회장이 될테야 - (C++) 문제 풀이 k층의 n호에 거주하는 사람은 아래의 표와 같다. 재귀함수를 이용하여, getNum 함수를 만들었다. int getNum(int x, int y) { if (y == 1) { return 1; } else if (x == 0) { return y; } else { return (getNum(x - 1, y) + getNum(x, y - 1)); } } if else 문을 이용하여 n = 1인 경우에는, 항상 한 명이 거주하고 있기 때문에 return 1을 k = 0인 경우에는, 항상 n명이 거주하고 있기 때문에 return n을 해주었다. 위의 경우가 아니라면, (k층의 n-1호) + (k-1층의 n호) = (k층의 n호)가 성립한다. 코드 #include using namespace std;.. 2023. 5. 24.
반응형