LeetCode/DP심화 38

2140. Solving Questions With Brainpower

2140. Solving Questions With Brainpower class Solution: def mostPoints(self, questions: List[List[int]]) -> int: # brainpower[i]는 해당 문제를 푼 후 건너뛰어야 하는 문제의 개수를 의미 # 즉, 문제 i를 풀기로 선택하면, # 그 다음 연속된 brainpower[i]개의 문제는 풀 수 없음 n = len(questions) dp = [0] * (n+1) # dp[i]는 질문 i부터 끝까지 얻을 수 있는 최대 점수 for i in range(n - 1, -1, -1): # 역순으로 순회 point, b..

LeetCode/DP심화 2025.01.12

474. Ones and Zeroes

474. Ones and Zeroes https://youtu.be/miZ3qV04b1g?si=ieg8qGyjhzei0dQq class Solution: def findMaxForm(self, strs: List[str], m: int, n: int) -> int: # memoization dp = {} # 메모이제이션을 위한 딕셔너리 생성, 키는 (i, m, n), 값은 최대 부분집합 크기 def dfs(i, m, n): if i == len(strs): # 문자열 리스트를 모두 탐색했을 경우 return 0 # 부분집합을 더 이상 추가할 수 없으므로 0 반환 if (i, m, n) in ..

LeetCode/DP심화 2025.01.12

279. Perfect Squares ★★★

279. Perfect Squares # 완전 제곱수의 합이 n 이 되는 요소 개수 찾기 # 그런데 그 요소 개수가 최대한 적어야 해서. # 제곱수는 큰수로 이뤄저 있어야 하므로, 큰수부터 검색하는것이..# DP 또는 BFS 로 풀수 있음  1. Dynamic Programming (DP) 풀이  예제)class Solution: def numSquares(self, n: int) -> int: """ 문제 설명: 정수 n을 완전 제곱수들의 합으로 표현할 때, 필요한 최소 항의 개수를 구하는 문제. 완전 제곱수는 1, 4, 9, 16과 같은 수를 의미합니다. """ # DP 배열 초기화 # dp[i]는 숫자 i를..

LeetCode/DP심화 2025.01.08