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

↓ 틀린 코드 더보기 n = int(input()) arr = list(map(int, input().split())) result = -1001 sum = 0 for i in range(n): for j in range(n-i): for k in range(j, j+i+1): sum += arr[k] if sum > result: result = sum sum = 0 print(result) 수열의 합들을 모두 비교하여 그 중 최댓값을 출력하는 방식입니다. 시간초과가 나왔습니다. n = int(input()) arr = list(map(int, input().split())) sum = [arr[0]] for i in range(len(arr)-1): sum.append(max(sum[i] + arr[..

stringA = input().strip().upper() stringB = input().strip().upper() dp = [[0] * (len(stringB)+1) for i in range(len(stringA)+1)] for i in range(1, len(stringA)+1): for j in range(1, len(stringB)+1): if stringB[j-1] == stringA[i-1]: dp[i][j] = dp[i-1][j-1]+1 else: dp[i][j] = max(dp[i-1][j], dp[i][j-1]) print(dp[-1][-1]) 문자열 A와 B가 주어졌을 때, A와 B의 문자들을 일일히 비교하며 문자열의 최대 길이를 dp에 캐싱해줍니다. 따라서 dp는 stringB..

n = int(input()) wire = [] dp = [1] * n for i in range(n): wire.append(list(map(int, input().split()))) wire.sort(key=lambda x: x[0]) for i in range(n): for j in range(i): if wire[j][1] < wire[i][1]: dp[i] = max(dp[i], dp[j] + 1) print(n - max(dp)) 우선 입력받을 때 전봇대의 순서가 정렬되어 입력되는 것이 아니라는 점에 유의해야 합니다. 따라서 정렬을 해야한다는 생각을 가지고 작성했습니다. 전봇대의 개수에 맞게 wire리스트에 추가해주었습니다. wire리스트의 각 요소는 list형식으로 이루어져 있으며 이 것의 ..

더보기 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리스트에 입..