일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- String
- 파이썬
- Unity
- 백준
- Basic
- 문제풀이
- Tutorial
- Unreal Engine 5
- C#
- DP
- Algorithm
- W3Schools
- python
- Programming
- Material
- github
- dfs
- 재귀
- 기초
- w3school
- 오류
- loop
- parameter
- c++
- guide
- dynamic
- 시작해요 언리얼 2022
- UE5
- 프로그래밍
- Class
- Today
- Total
목록Algorithm (107)
행복한 개구리

더보기 N = int(input()) arr = list(map(int, input().split())) dp = [[1, 1] for i in range(N)] result = [] for i in range(N): for j in range(i): if arr[j] arr[i]: dp[i][1] = max(dp[i][1], dp[j][1] + 1) dp[i][1] = max(dp[i][1], dp[i-1][1]) for i in ..

↓ 틀린 코드 더보기 n = int(input()) arr = list(map(int, input().split())) dp = [[0] for i in range(n)] dp[0] = [arr[0]] for i in range(1, n): if arr[i] > dp[i-1][-1]: dp[i] = dp[i-1] + [arr[i]] else: dp[i] = dp[i-1] print(len(dp[-1])) 주어진 수열의 0인덱스가 최솟값이 아닐 수도 있는데 주어진 수열의 0을 지정해버리는 실수를 했습니다. N = int(input()) arr = list(map(int, input().split())) dp = [1] * N for i in range(1, N): if max(arr[:i]) < arr[i..

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 for i in range(10)] for i in range(101)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, n+1): for j in range(10): if j == 0: dp[i][j] = dp[i-1][1] elif j == 9: dp[i][j] = dp[i-1][8] else: dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] print(sum(dp[n]) % 1000000000) n자릿수의 경우의 수를 각 수(0~9)마다 저장하기위해 dp리스트를 만들었습니다. 규칙을 이끌어내기 위해 1자릿수의 정답들은 리스트에 지정해줍니다. 반복을 통해서 초깃값을 지정했습니다. 표를 ..

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..