[백준 알고리즘] 10870번: 피보나치 수 5 (파이썬 / Python)
·
알고리즘/백준
문제 접근 피보나치 수열은 for문으로도 구현 가능하지만 재귀함수로도 구현 가능하다. Fn = Fn-1 + Fn-2 (n ≥ 2)를 활용하면 될 것 같다. 정답 코드 import sys def fibonacci(n): if n == 0: return 0 elif n == 1 or n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) n = int(sys.stdin.readline()) print(fibonacci(n)) 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + ..
[백준 알고리즘] 2805번: 나무 자르기 (파이썬 / Python)
·
알고리즘/백준
정답 비율 25.559%... 처음에는 단순히 탐색하는 방식에서 탐색 범위를 줄이고 이중반복문을 사용하지 않음으로써 시간을 줄여보고자 했다. (a = 나무 리스트) 1. max(a) - m보다 큰 값만 존재하는 b리스트를 하나 더 생성 (조건을 만족하지 않는 나무들은 개수에 영향을 주지 않으므로) 2. max(a) - m ~ max(a)+1의 범위만 탐색하며 조건에 맞으면 출력, break 결과는 시간초과가 났다,, 시간초과 코드 import sys n, m = map(int, sys.stdin.readline().split()) a = list(map(int, sys.stdin.readline().split())) b = [] for i in range(len(a)): if a[i] > (max(a)..
[백준 알고리즘] 2839번 : 설탕 배달 (파이썬 / Python)
·
알고리즘/백준
접근 방법 상근이는 최대한 적은 봉지를 들고 가려고 한다. 가장 적은 수의 봉지를 들고 가려면, 가능한 한 5kg의 봉지를 많이, 3kg의 봉지를 적게 구성해야 한다. 정답 코드 import sys n = int(sys.stdin.readline()) flag = 0 for i in range((n // 3) + 1): three = 3 * i five = (n - three) / 5 if five == int(five): print(int(i + five)) flag = 1 break if flag == 0: print(-1) 코드 설명 3kg 봉지의 수가 0개인 경우 -> 1개인 경우 -> .... -> n//3개인 경우 까지 for문을 반복한다. 각 경우에 five 변수는 n에서 three를 뺀 것..