n = int(input())arr = list(map(int, input().split()))dp = [1] * nfor i in range(1, n): for j in range(0, i): if arr[j] 0 이런식으로 n-1번 반복하면 주어진 배열에 대해 가장 긴 증가하는 부분 수열을 구할 수 있다.4 2 5 8 4 11 15에서 4 5 8 11 15를 구할 수 있는데,5는 2가 5보다 작으니 dp[1]+1과 기존 dp[2]인 1을 비교하여 더 큰 수인 2가 dp[2]에 갱신됨.8은 5가 8보다 작으니 dp[2]+1과 기존 dp[3]인 1을 비교하여 더 큰 수인 3이 dp[3]에 갱신됨.4는 2가 4보다 작으니 dp[1]+1과 기존 dp[4]인 1을 비교하여 더 큰 수인 2가 dp[..
Algorithm/잡
n, m = map(int, input().split())arr = []dp = [[0] * m for i in range(n)]#arr 초기화arr = []for i in range(n): arr.append(list(map(int, input().split())))for i in range(n): dp[i][0] = arr[i][0]for j in range(1, m): for i in range(n): if (i == 0): dp[i][j] = max(dp[i + 1][j - 1], dp[i][j - 1]) + arr[i][j] elif (i == n - 1): dp[i][j] = max(dp[i - 1][j - 1], dp[i][j - 1]) + arr[i][j]..
import sysput = sys.stdin.readline()n, m = map(int, put.split())arr = [0] * nfor i in range(n): arr[i] = int(input())arr.sort(reverse=True)cnt = 0remain = mfor i in range(n): if arr[i] 위의 방식은 그리드 방식이 가미된 방식이고import sysput = sys.stdin.readline()n, m = map(int, put.split())arr = [0] * nfor i in range(n): arr[i] = int(input())arr.sort(reverse=True)dp = [10001] * (m + 1)dp[0] = 0for i in range(n..