From 719097eb18b41854e1492c0f6b174f2cf58773eb Mon Sep 17 00:00:00 2001 From: huisuu Date: Sat, 31 Aug 2024 20:31:08 +0900 Subject: [PATCH] 72.py --- HSKIM/71to80/72.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 HSKIM/71to80/72.py diff --git a/HSKIM/71to80/72.py b/HSKIM/71to80/72.py new file mode 100644 index 0000000..a9e7a45 --- /dev/null +++ b/HSKIM/71to80/72.py @@ -0,0 +1,28 @@ +def solution(arr): + n = len(arr[0]) # 배열의 열 개수 + dp = [[0] * n for _ in range(4)] # 4가지 패턴을 위한 DP 테이블 초기화 + + # 첫 번째 열에서 각 패턴의 초기화 + dp[0][0] = arr[0][0] # 패턴 0: 상단 + dp[1][0] = arr[1][0] # 패턴 1: 중앙 + dp[2][0] = arr[2][0] # 패턴 2: 하단 + dp[3][0] = arr[0][0] + arr[2][0] # 패턴 3: 상단과 하단 + + # 두 번째 열부터 마지막 열까지 계산 + for i in range(1, n): + # 패턴 0이 선택된 경우 (상단) + dp[0][i] = arr[0][i] + max(dp[1][i - 1], dp[2][i - 1]) + + # 패턴 1이 선택된 경우 (중앙) + dp[1][i] = arr[1][i] + max(dp[0][i - 1], dp[2][i - 1], dp[3][i - 1]) + + # 패턴 2가 선택된 경우 (하단) + dp[2][i] = arr[2][i] + max(dp[0][i - 1], dp[1][i - 1]) + + # 패턴 3이 선택된 경우 (상단과 하단) + dp[3][i] = arr[0][i] + arr[2][i] + dp[1][i - 1] + + # 마지막 열에서 최대 가중치 반환 + return max(dp[0][-1], dp[1][-1], dp[2][-1], dp[3][-1]) + +print(solution([[1, 7, 13, 2, 6], [2, -4, 2, 5, 4], [5, 3, 5, -3, 1]]))