일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- DP
- 문제풀이
- UE5
- W3Schools
- Algorithm
- Unity
- w3school
- 기초
- 백준
- 프로그래밍
- C#
- Programming
- parameter
- Material
- Unreal Engine 5
- String
- github
- loop
- python
- dynamic
- guide
- Tutorial
- Basic
- 재귀
- 파이썬
- 오류
- dfs
- 시작해요 언리얼 2022
- c++
- Class
- Today
- Total
목록프로그래밍 (7)
행복한 개구리

n = int(input()) wine = [0] for i in range(n): wine.append(int(input())) dp = [0 for i in range(10001)] dp[1] = wine[1] for i in range(2, n+1): if i == 2: dp[2] = wine[1] + wine[2] else: dp[i] = max(dp[i-1], dp[i-2] + wine[i], dp[i-3] + wine[i-1] + wine[i]) print(dp[n]) wine과 dp리스트의 0인덱스는 0으로 만들어두었습니다. wine[1] = 1번째 와인잔, dp[1] = 1번째 와인잔까지의 최대 와인량을 표현하는 데 있어서 조금 더 알아보기 쉽도록 작성하기위해서 입니다. wine리스트에 입..

N = int(input()) # dp의 범위가 0 ~ n까지 저장할 수 있도록 범위를 N+1까지 지정합니다. dp = [0 for i in range(N+1)] for n in range(2, N+1): # n에서 1을 뺀 후 dp[n-1]의 과정을 실행할 때의 값(해당 수의 연산 최댓값) dp[n] = dp[n-1] + 1 # n을 3으로 나눌 수 있을 때 if n % 3 == 0: dp[n] = min(dp[n], dp[n//3] + 1) # n을 2로 나눌 수 있을 때 if n % 2 == 0: dp[n] = min(dp[n], dp[n//2] + 1) # n의 연산 최솟값 출력 print(dp[N]) 우선 입력받은 수까지 연산 최솟값을 저장할 dp리스트를 만듭니다 dp리스트의 인덱스는 주어진 정..

n = int(input()) step = [0 for i in range(300)] dp = [0 for i in range(300)] for i in range(n): step[i] = int(input()) dp[0], dp[1], dp[2] = step[0], step[0] + step[1], max(step[1] + step[2], step[0] + step[2]) for i in range(3, n): dp[i] = max(dp[i-3] + step[i-1] + step[i], dp[i-2] + step[i]) print(dp[n-1]) 규칙을 찾는 것이 우선입니다. step에는 각 계단의 비용을, dp에는 각 계단까지의 최댓값을 저장합니다. 1번째, 2번째 계단의 최댓값은 step[0], s..

T = int(input()) dp = [0 for i in range(100)] for i in range(5): if i < 3: dp[i] = 1 else: dp[i] = 2 for i in range(T): N = int(input()) for i in range(5, N): dp[i] = dp[i-5] + dp[i-1] print(dp[N-1]) 수열의 규칙을 찾아봅시다. P(N)에서 N이 5일때까지는 별 규칙이 없지만 N이 5이상이라면 P(N) = P(N-1) + P(N-5)의 규칙을 가집니다. dp리스트를 입력받을 수 있는 범위에 맞게 생성해줍니다. 값은 0으로 설정합니다. 지정한 인덱스의 값이 0이라면 아직 P(N)이 구해지지 않은 상태인 것입니다. P(N)에서 N이 1~5일 때는 규칙없이..

↓ 틀린코드 더보기 더보기 N = int(input()) dp = [0 for i in range(1000000)] dp[0] = 1 dp[1] = 2 def tile(n): if dp[n] != 0: return dp[n] else: dp[n] = tile(n-2) + tile(n-1) return dp[n] tile(N-1) result = dp[N-1] print(result % 15746) 재귀 오류가 떴습니다. 최대로 실행할 수 있는 깊이를 초과했답니다. import sys input = sys.stdin.readline print = sys.stdout.write N = int(input()) dp = [0 for i in range(1000000)] dp[0] = 1 dp[1] = 2 for..

import sys input = sys.stdin.readline def w(a, b, c): if a 20: return w(20, 20, 20) if dp[a][b][c] != 0: return dp[a][b][c] if a < b < c: dp[a][b][c] = w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) return dp[a][b][c] dp[a][b][c] = w(a-1, b, c) + w(a-1, b-1, c) + \ w(a-1, b, c-1) - w(a-1, b-1, c-1) return dp[a][b][c] dp = [[[0 for _ in range(21)] for _ in range(21)] for _ in range(21)] while True:..