본문 바로가기

백준128

[백준 24416/c++]피보나치 수 1 어제랑 다른 버전의 피보나치 수 문제이다 재귀와 다이나믹 프로그래밍의 차이를 알 수 있는 문제였다 재귀는 반드시 함수를 만들어서 풀어야 하며, 매번 연산을 하면 너무 느리므로 top-down 방식의 memoization 을 사용하여 연산 속도를 향상 시킬 수 있다 (memoization이 필수는 아님) 다이나믹 프로그래밍의 경우 반드시 함수를 만들 필요는 없고 배열과 반복문만으로 만들 수 있으며 bottom-up 방식의 tabulation 을 사용한다 (tabulation이 필수임) 일반적으로 다이나믹 프로그래밍이 재귀함수를 사용한것보다 시간복잡도, 공간복잡도가 낮아서 성능이 좋다 https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 .. 2022. 7. 18.
[백준 2748/c++]피보나치 수 2 이전 수와 현재 수를 더해서 다음 수를 만들어 내는 수열을 피보나치 수열이라고 한다 피보나치 수열은 다이나믹 프로그래밍 = 동적 계획법 의 분류에 해당되는데 스스로 재귀하며 답을 도출해내는 과정에서 이전의 계산한 결과는 배열에 넣어서 매번 따로 계산 없이 배열에서 이전 결과값을 그대로 가져와 사용하여 효과적으로 계산할 수 있다 벡터를 이용해서 풀었지만 수가 워낙 크다보니 배열이 많이 필요하지 않아서 앞으로는 간단히 정적 배열로 풀어도 될 것같다 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으.. 2022. 7. 17.
[백준 1676/c++] 팩토리얼 0의 개수 구현에 가까운 문제였다 무슨 수를 곱하던 10의 배수를 곱하면 결국 맨 뒤에 0이 모이게 된다 뒤의 0의 수는 10을 곱한 수와 같고 10은 2와 5를 곱한 수와 같다 2는 5보다 많으니 최종 수가 5로 몇 번 나눠지는 지를 구해 약수로 5가 몇개인지 구하고 그 수가 0의 개수와 같다고 판단하면 문제 해결인 문제다 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net #include using namespace std; int main() { int n; int cnt=0; cin >> n; if (n == 0) { cout 0) { .. 2022. 7. 16.
[백준 10815/c++] 숫자 카드 맵을 사용하여 해시 카운트를 사용, 큰 수 이므로 숫자가 아닌 문자열의 형태로 넣어 비교하는 문제였다 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m; string s; unordered_map mapi; c.. 2022. 7. 15.