Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 11048. ์ด๋™ํ•˜๊ธฐ

deo2kim 2020. 8. 18. 08:22
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

1. DP | silver1

2. ์ฃผ์–ด์ง„ 2์ฐจ์› ๋ฐฐ์—ด๋ณด๋‹ค ํ•œ์นธ์”ฉ ๋” ํฐ 0์œผ๋กœ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

 (ํ•œ์นธ์”ฉ ๋” ๋งŽ์€ ์ด์œ ๋Š” ๊ฐ€์žฅ ์œ—์ค„๊ณผ ๊ฐ€์žฅ ์™ผ์ชฝ์ค„๋„ ๋น„๊ตํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ)

3. ํ˜„์žฌ ์ง€์ ์˜ ๊ฐ’(maze)๊ณผ ๊ทธ ์  ์ด์ „์˜ ๊ฐ’๋“ค(์™ผ์ชฝ, ์™ผ์ชฝ์œ„, ์œ„)์ค‘ ํฐ ๊ฐ’(dp)์„ ๋”ํ•ด์„œ (dp์—) ๊ฐ’์„ ๊ณ„์† ์Œ“์•„ ์ค€๋‹ค.

 

๐Ÿ’จ ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์ œ. BFS๋กœ๋„ ๊ฐ„๋‹จํžˆ ํ’€ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

N, M = map(int, input().split())
maze = [list(map(int, input().split())) for _ in range(N)]

# ๊ฐ€์žฅ ์œ—์ค„๊ณผ ๊ฐ€์žฅ ์™ผ์ชฝ์ค„๋„ ๋น„๊ต๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ์นธ์”ฉ ๋”ํ•ด์„œ ๋งŒ๋“ค์–ด์ค€๋‹ค.
dp = [[0] * (M + 1) for _ in range(N + 1)]
for i in range(1, N + 1):
    for j in range(1, M + 1):
        dp[i][j] = maze[i - 1][j - 1] + max(dp[i - 1][j], dp[i - 1][j - 1], dp[i][j - 1])

print(dp[-1][-1])

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/11048

 

11048๋ฒˆ: ์ด๋™ํ•˜๊ธฐ

์ค€๊ทœ๋Š” N×M ํฌ๊ธฐ์˜ ๋ฏธ๋กœ์— ๊ฐ‡ํ˜€์žˆ๋‹ค. ๋ฏธ๋กœ๋Š” 1×1ํฌ๊ธฐ์˜ ๋ฐฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๊ณ , ๊ฐ ๋ฐฉ์—๋Š” ์‚ฌํƒ•์ด ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ๋ฏธ๋กœ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ— ๋ฐฉ์€ (1, 1)์ด๊ณ , ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋žซ ๋ฐฉ์€ (N, M)์ด๋‹ค. ์ค€๊ทœ๋Š” ๏ฟฝ๏ฟฝ

www.acmicpc.net


๋ฌธ์ œ

์ค€๊ทœ๋Š” N×M ํฌ๊ธฐ์˜ ๋ฏธ๋กœ์— ๊ฐ‡ํ˜€์žˆ๋‹ค. ๋ฏธ๋กœ๋Š” 1×1ํฌ๊ธฐ์˜ ๋ฐฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๊ณ , ๊ฐ ๋ฐฉ์—๋Š” ์‚ฌํƒ•์ด ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ๋ฏธ๋กœ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ— ๋ฐฉ์€ (1, 1)์ด๊ณ , ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋žซ ๋ฐฉ์€ (N, M)์ด๋‹ค.

์ค€๊ทœ๋Š” ํ˜„์žฌ (1, 1)์— ์žˆ๊ณ , (N, M)์œผ๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ค€๊ทœ๊ฐ€ (r, c)์— ์žˆ์œผ๋ฉด, (r+1, c), (r, c+1), (r+1, c+1)๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ๋ฐฉ์„ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฉ์— ๋†“์—ฌ์ ธ์žˆ๋Š” ์‚ฌํƒ•์„ ๋ชจ๋‘ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋˜, ๋ฏธ๋กœ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐˆ ์ˆ˜๋Š” ์—†๋‹ค.

์ค€๊ทœ๊ฐ€ (N, M)์œผ๋กœ ์ด๋™ํ•  ๋•Œ, ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์‚ฌํƒ• ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฏธ๋กœ์˜ ํฌ๊ธฐ N, M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N, M ≤ 1,000)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ ์ค„์—๋Š” ์ด M๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, r๋ฒˆ์งธ ์ค„์˜ c๋ฒˆ์งธ ์ˆ˜๋Š” (r, c)์— ๋†“์—ฌ์ ธ ์žˆ๋Š” ์‚ฌํƒ•์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์‚ฌํƒ•์˜ ๊ฐœ์ˆ˜๋Š” 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ค€๊ทœ๊ฐ€ (N, M)์œผ๋กœ ์ด๋™ํ•  ๋•Œ, ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์‚ฌํƒ• ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•