From 593bc9974f48a0775c0bc94f0b1f11f923939392 Mon Sep 17 00:00:00 2001 From: limstonestone Date: Wed, 20 Sep 2023 15:32:41 +0900 Subject: [PATCH] =?UTF-8?q?Create=20=EB=95=85=EB=94=B0=EB=A8=B9=EA=B8=B0?= =?UTF-8?q?=20dohyun.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dohyun.py" | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "Programmers/\353\225\205\353\224\260\353\250\271\352\270\260/dohyun.py" diff --git "a/Programmers/\353\225\205\353\224\260\353\250\271\352\270\260/dohyun.py" "b/Programmers/\353\225\205\353\224\260\353\250\271\352\270\260/dohyun.py" new file mode 100644 index 00000000..145092d9 --- /dev/null +++ "b/Programmers/\353\225\205\353\224\260\353\250\271\352\270\260/dohyun.py" @@ -0,0 +1,28 @@ +""" + +풀이시간 +- 약 1시간 풀이 후 실패로 답지 참조 + +접근법 +- N 10만 이하 -> O(NlogN) +- 그리디? -> 현재 행에서 최대라고 해서 합이 최대가 되는게 아니기 때문에 X +- 열은 왜 4개로 고정? -> 각 열별로 결과를 저장해놓으면 될듯 +- 현재 열을 제외한 이전 행의 최대값과 현재 열의 값을 계속해서 더해가며 갱신하면 될듯 + +회고 +- 로직은 같은데 1차원 배열로만 해결하려다가 사고가 멈춰버린듯함 ㅠㅠ + - DP테이블은 2차원 배열도 가능하다는거 꼭 인지하기 + +""" + +def solution(land): + N = len(land) + + dp = [[0] * 4 for _ in range(N)] # DP 테이블 + dp[0] = land[0] + + for i in range(1, N): + for j in range(4): + dp[i][j] = land[i][j] + max(dp[i-1][:j] + dp[i-1][j+1:]) # 이전 행에서 같은 열을 제외한 나머지 열 중에서 최대 점수 더함 + + return max(dp[-1]) # 최대 점수 반환 \ No newline at end of file