๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/DP

[Python] ๋ฐฑ์ค€ 1915 ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•

by JayAlex07 2023. 3. 30.

๐Ÿง‘‍๐Ÿ’ป [Python] ๋ฐฑ์ค€ 1915 ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•

Gold 4 - DP

img

์ธ๋ฑ์Šค๊ฐ€ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š” ์„ ์—์„œ, ์œ„, ์™ผ์ชฝ, ์™ธ์ชฝ ์œ„์˜ ์ˆซ์ž๋“ค ์ค‘ min ๊ฐ’์„ ๊ตฌํ•œ ๋‹ค์Œ์— 1์„ ๋”ํ•ด์ค€๋‹ค


 

์ฝ”๋“œ

N, M = map(int, input().split())
matrix = [list(map(int, input())) for _ in range(N)]
dp_table = [[0] * M for _ in range(N)]

for i in range(N):
    for j in range(M):

        if matrix[i][j] == 1:
            dp_table[i][j] = 1

            if 0 <= i - 1 and 0 <= j - 1:
                dp_table[i][j] = min(dp_table[i - 1][j], dp_table[i - 1][j - 1], dp_table[i][j - 1]) + 1

result = 0        
for d in dp_table:
    result = max(result, max(d))

print(result ** 2)

์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋˜ ์ฝ”๋“œ

  • ์™„์ „ํƒ์ƒ‰์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ’€์ด๋ฅผ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์‹ค์ƒ for๋ฌธ์„ 4๋ฒˆ์„ ํ•ด์•ผ ํ•œ๋‹ค...
N, M = map(int, input().split())

def square(i, j, length):

    for r in range(i, length + i):
        for c in range(j, length + j):
            if matrix[r][c] == 0:
                return False

    return True

matrix = [list(map(int, input())) for _ in range(N)]


l = N
flag = False


while flag == False:

    for i in range(N):
        if flag == True:
            break

        for j in range(M):

            if i + l <= N and j + l <= M:
                flag = square(i, j, l)

                if flag == True:
                    break

            else:
                break

    l -= 1


print((l + 1) ** 2)

'์•Œ๊ณ ๋ฆฌ์ฆ˜ > DP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ๋ฐฑ์ค€ 10844 ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜  (0) 2023.03.24
[Python] ๋ฐฑ์ค€ 11726 2 x n ํƒ€์ผ  (0) 2023.03.22