[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ / ํŒŒ์ด์ฌ / Python / ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP)
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ / ํŒŒ์ด์ฌ / Python / ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP)

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

 

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

์–ด๋–ค ์ˆซ์ž์—์„œ k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 1924์—์„œ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” 94 ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ˆซ์ž number์™€ ์ œ๊ฑฐํ•  ์ˆ˜์˜ ๊ฐœ์ˆ˜ k๊ฐ€ solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. number์—์„œ k ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • number๋Š” 1์ž๋ฆฌ ์ด์ƒ, 1,000,000์ž๋ฆฌ ์ดํ•˜์ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
  • k๋Š” 1 ์ด์ƒ number์˜ ์ž๋ฆฟ์ˆ˜ ๋ฏธ๋งŒ์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

 

 

๋ฐ˜์‘ํ˜•