MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ

MUKER 2023. 3. 29. 00:43
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋‚˜์˜ ํ’€์ด

func solution(_ board:[[Int]]) -> Int {
    var myBoard = board
    let N = board.count
    let M = board[0].count
    for i in 1..<N {
        for j in 1..<M {
            if myBoard[i][j] > 0 {
                myBoard[i][j] += min(myBoard[i][j-1],myBoard[i-1][j-1],myBoard[i-1][j])
                // ํ˜„์žฌ ๋ณด๋“œ์˜ ์™ผ์ชฝ,์œ„์ชฝ,์™ผ์œ„์ชฝ์˜ ๊ฐ’ ์ค‘ ์ œ์ผ ์ž‘์€ ๊ฐ’์— + 1์„ ํ•˜์—ฌ ํ˜„์žฌ ๋ณด๋“œ์— ์ €์žฅ
                // why? ์„ธ๊ฐ’ ๋ชจ๋‘ 1๋กœ ๋‹ค ์ฐจ์žˆ๋‹ค๋ฉด 2๊ฐ€๋˜๋ฉด์„œ ํ•ด๋‹น ๋ณด๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 2์ธ ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์ด ๋งŒ๋“ค์–ด์ง
                // ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ธ๊ฐ’ ๋ชจ๋‘ 2๋กœ ์ฐจ์žˆ๋‹ค๋ฉด 3์ธ ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์ด ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Œ
            }
        }
    }
    let num = myBoard.flatMap({$0}).max()!
    return num * num
}

ํ’€์ด ํ‚ค์›Œ๋“œ

DP
๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ทธ๋ ‡์ง€๋งŒ..
DP๋Š” ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ด์•ผ ์–ด๋–ค์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ• ์ง€ ์ƒ๊ฐ์ด ๋‚˜๋Š”๊ฑฐ ๊ฐ™๋‹ค.
๋ฐ˜๋Œ€๋กœ DP๋ฅผ ๋ณด๋Š”๋ˆˆ์ด ๋ถ€์กฑํ•˜๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผํ• ์ง€ ์‰ฝ๊ฒŒ ์ƒ๊ฐ๋‚˜์ง€ ์•Š๋Š”๊ฑฐ ๊ฐ™๋‹ค.