문제풀이/DP

·문제풀이/DP
https://www.acmicpc.net/problem/16432 코드import sysinput = sys.stdin.readlinen = int(input())arr = []for _ in range(n): input_data = list(map(int, input().split())) arr.append(input_data[1:])dp = [[[]for _ in range(10)] for _ in range(n)]for a in arr[0]: # 첫째날 dp[0][a] = [a]for i in range(1, n): for a in arr[i]: for j in range(1, 10): if a != j and dp[i-1][j] != [..
·문제풀이/DP
https://www.acmicpc.net/problem/14430 코드n, m = map(int, input().split())board = [list(map(int, input().split())) for _ in range(n)]dp = [[0]*(m+1) for _ in range(n+1)]for i in range(1, n+1): for j in range(1, m+1): dp[i][j] = max(dp[i-1][j], dp[i][j-1])+board[i-1][j-1] # 위 or 왼쪽에서print(dp[n][m])  로봇은 아래나 오른쪽으로 한 칸만 이동할 수 있다. 그렇기 때문에 (i, j)칸까지 얻을 수 있는 자원의 최대 숫자는 한 칸 위와 한 칸 왼쪽 중 최대값과 현재..
·문제풀이/DP
21923번: 곡예 비행동헌이는 모형 비행기 조종 대회에 참가하였다. 이 대회에서는 격자 모양의 공간에서 모형 비행기를 조종하여 얻는 비행 점수로 순위를 매긴다. 격자의 각 칸에는 점수가 부여되어 있고, 비행www.acmicpc.net 코드n, m = map(int, input().split())scores = [[0]+list(map(int, input().split())) for _ in range(n)]up = [[-int(1e9)]*(m+1) for _ in range(n+1)] # 상승 비행 점수down = [[-int(1e9)]*(m+1) for _ in range(n+1)] # 하강 비행 점수up[n-1][1] = scores[n-1][1] # 출발점# 상승for j in range..
·문제풀이/DP
15993번: 1, 2, 3 더하기 8첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 100,000보다 작거나 같다.www.acmicpc.net 코드dp = [[0]*2 for _ in range(100001)] # 홀수, 짝수dp[1][0] = 1dp[2][0] = 1dp[2][1] = 1dp[3][0] = 2dp[3][1] = 2for i in range(4, 100001): dp[i][0] = (dp[i-1][1]+dp[i-2][1]+dp[i-3][1]) % 1_000_000_009 dp[i][1] = (dp[i-1][0]+dp[i-2][0]+dp[i-3][0]) % 1_000_000_009for _ in ..
·문제풀이/DP
2157번: 여행첫째 줄에 N(1 ≤ N ≤ 300), M(2 ≤ M ≤ N), K(1 ≤ K ≤ 100,000)가 주어진다. K는 개설된 항공로의 개수이다. 다음 K개의 줄에는 각 항공로에 대한 정보를 나타내는 세 정수 a, b, c(1 ≤ a, b ≤ N, 1 ≤ c ≤ 1www.acmicpc.net 코드import sysinput = sys.stdin.readlinen, m, k = map(int, input().split())path = [[-1]*(n+1) for _ in range(n+1)] # path[i][j] : i->j로 갈 때 기내식 점수for _ in range(k): a, b, c = map(int, input().split()) if ..
딜레이레이
'문제풀이/DP' 카테고리의 글 목록 (3 Page)