[백준][Python][14225][브루트 포스] 부분수열의 합
문제 : https://www.acmicpc.net/problem/14225 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 수 있다. 하지만, 4는 만들 수 없기 때문에 정답은 4이다. www.acmicpc.net 원래는 재귀 항목에 있는 문제이지만 난 그런 거 안 쓴다. 숫자 리스트를 받고, 이 리스트의 멱집합을 구한다. 이 부분집합들의 합을 더한 뒤 정렬한다. 코드가 최적화가 안됐다고 할 수 있는데, 어차피 멱집합은 O(2^n)이다. 정렬 한두 번 더한다고 O(nlo..
더보기
[백준][Python][2747][lru_cache] 피보나치 수
문제 : https://www.acmicpc.net/problem/2747 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 www.acmicpc.net python 3.2 이상 기준이다. functools 의 lru_cache decorator 는 memoization을 자동..
더보기