99클럽 코테 스터디 22일차 TIL : 동적계획법

마늘맨·2024년 8월 12일
0

99클럽 3기

목록 보기
22/42

Notion에서 작성한 글이라, 여기에서 더 깔끔하게 보실 수 있습니다! 😮😊


[Challenger] Maximal Rectangle

[Maximal Rectangle]

Solution. O(NM)O(NM)

class Solution:
    def maximalRectangle(self, matrix: List[List[str]]) -> int:
        n, m = len(matrix), len(matrix[0])

        dp = [[*map(int, r)]+[-1] for r in matrix]
        for i in range(1, n):
            for j in range(m):
                if dp[i][j]: dp[i][j] += dp[i-1][j]

        mx = 0
        for row in dp:
            stack = [-1]

            for i in range(m+1):
                while row[i] < row[stack[-1]]:
                    sq = row[stack.pop()] * (i-1-stack[-1])
                    if mx < sq: mx = sq
                stack.append(i)

        return mx

Memo

  • 풀이 작성
  • DP 코드 찾아보기
  • 나름대로 다른 접근 해보기
profile
안녕! 😊

0개의 댓글