본문 바로가기

백준2

[백준] 피보나치 함수 문제 요약 아래와 같이 N번째 피보나치 수를 구하는 C++ 함수가 존재합니다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } 위의 함수를 호출해서 피보나치 수를 구할때 출력되는 0과 1의 횟수를 구하려고 합니다. 예시 fibonacci(2) 호출시 0 ⇒ 1번, 1 ⇒ 1번 호출됨 fibonacci(3) 호출시 0 ⇒ 1번, 1 ⇒ 2번 호출됨 나의 생각 먼저 문제에서 제공한 fibonacci 함수를 그대로 구현 후 활용하면 속도에서 문제가 발생할 것이라 생각하였습니다. 이.. 2023. 3. 19.
[백준] 블랙잭 문제 정리 N개의 숫자가 주어지고 그 중에서 3개를 선택해서 주어지는 모두 더한 값이 M보다 작거나 같은 값 중에서 가장 큰 값을 구하세요. 나의 생각 주어지는 N개의 숫자중에서 서로 다른 3개의 숫자를 선택하는 조합이라고 생각하였습니다. N개에서 3개를 선택하는 모든 경우를 구하기 위해서 DFS 알고리즘을 사용하였습니다. 지금까지는 DFS 알고리즘을 사용할때 배열에서 한번 선택한 값을 제거하기 위해서 filter를 사용하였습니다. 다른 사람의 풀이를 보았을 때 속도가 10배 이상 차이가 나는 것을 확인 하여 visited 배열을 사용하게 되었습니다. 이는 깊이 우선탐색 방법인 DFS의 특성 때문에사용 가능한 방법으로, 이번에 선택한 인덱스의 아이템은 깊이의 마지막에 도달하기 전까지 다시 재사용할일이 없.. 2023. 3. 16.