๐กsolutions )
๐ฌ ๋์ ํ๋ก๊ทธ๋๋ฐ(DP)๋ฅผ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ๊ฒ. ๋ธ๋ฃจํธ ํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๋ฉด ํจ์จ์ฑ ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํจ
๐ฌ ๋์ ๊ณํ๋ฒ(Dynamic Programming)์ด๋?
๋์ ํ๋ก๊ทธ๋๋ฐ์ “์ ์ฒด ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋จ์ํํ ๋ค์ ์ ํ์์ผ๋ก ๋ง๋ค์ด ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ์ฉํด์ ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์” ์ด๋ค. ๋ถํ์ํ ๊ณ์ฐ์ ์ค์ด๊ณ , ํจ์จ์ ์ผ๋ก ์ต์ ํด๋ฅผ ์ฐพ์ ์ ์๋ค.
๐ฌ ๋ถํ ์ ๋ณต๊ณผ ๋์ผํ ์ ์ ์ ์ฒด ๋ฌธ์ ๋ฅผ ์์ ๋จ์๋ก ๋ฌธ์ ๋ก ํผ๋ค๋ ๊ฒ์ง๋ง, ์ฐจ์ด์ ์ ์ค๋ณต์ ์ ๋ฌด์ด๋ค. ๋ถํ ์ ๋ณต์ ์์ ๋ฌธ์ ๋ผ๋ฆฌ ์ค๋ณต์ด ์๊ณ , ๋์ ํ๋ก๊ทธ๋๋ฐ์ ์ค๋ณต์ด ์๋ค.
๐ซcode )
def solution(board):
r = len(board)
c = len(board[0])
for i in range(1, r):
for j in range(1, c):
if board[i][j] == 1:
board[i][j] = min(board[i-1][j-1], board[i-1][j], board[i][j-1])+1
res = []
for r in board:
res.append(max(r))
return max(res)**2
# arr = sum(board, [])
# max_v = max(arr)
# return max_v**2
๐ description )
๋ฌธ์ ์ถ์ฒ : programmers.co.kr/learn/courses/30/lessons/42883?language=python3
๋ฌธ์ ์ค๋ช ์ด๋ค ์ซ์์์ k๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ซ์ 1924์์ ์ ๋ ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ 94 ์ ๋๋ค. ๋ฌธ์์ด ํ์์ผ๋ก ์ซ์ number์ ์ ๊ฑฐํ ์์ ๊ฐ์ k๊ฐ solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. number์์ k ๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ๋ง๋ค ์ ์๋ ์ ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์. ์ ํ ์กฐ๊ฑด
์ ์ถ๋ ฅ ์
|