๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv3] ๋“ฑ๊ตฃ๊ธธ (Python)

sssbin 2023. 3. 22. 12:20

 

https://school.programmers.co.kr/learn/courses/30/lessons/42898

 

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

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

programmers.co.kr

 

 

0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ dp ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ์ง‘์ด ์žˆ๋Š” ์ž๋ฆฌ๋Š” 1๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

๊ทธ ํ›„ 1ํ–‰ -> 2ํ–‰ -> ... ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ

(์˜ค๋ฅธ์ชฝ, ์•„๋ž˜์ชฝ์œผ๋กœ๋งŒ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์˜†์œผ๋กœ ๊ฑด๋„ˆ๊ฐ€๋ฉด์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.)

[x-1][y], [x][y-1]์˜ ๋ฐฐ์—ด์„ ํ•ฉํ•œ ๊ฐ’์„ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 42898: ๋“ฑ๊ตฃ๊ธธ

def solution(m, n, puddles):
    dp = [[0] * (m+1) for _ in range(n+1)]
    dp[1][1] = 1

    for x in range(1, n+1):
        for y in range(1, m+1):
            if x == 1 and y == 1:
                continue
            if [y, x] in puddles:
                continue
            dp[x][y] = dp[x-1][y] + dp[x][y-1] 

    return (dp[-1][-1]) % 1000000007

 

์ด ๋ฌธ์ œ ํ‘ธ๋Š๋ผ ๊ณ ์ƒ์„ ์ข€ ํ–ˆ๋‹ค...

 

1. ์ฒ˜์Œ์— ๋ฌธ์ œ ์ดํ•ด ์ž˜๋ชปํ•ด์„œ ์ตœ๋‹จ๊ฒฝ๋กœ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ตœ๋‹จ๊ฒฝ๋กœ์˜ ๊ธธ์ด์ธ ์ค„ ์•Œ๊ณ 

๋ถ„๋ช… ๋‹ค ๋งž๋Š”๋ฐ ์™œ ๋ชจ๋“  ๋‹ต์ด ํ‹€๋ฆฌ๊ฒŒ ๋‚˜์˜ค๋Š”๊ฑฐ์ง€ ํ•˜๊ณ  ํ•œ ์‹œ๊ฐ„๋™์•ˆ ์‚ฝ์งˆํ–ˆ๋‹คใ…Ž;;

2. ์ถœ์ œ์ž๊ฐ€ ๋ฌผ์ด ์ž ๊ธด ์ง€์—ญ์˜ ์ขŒํ‘œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ์คฌ๋‹ค;;

3. bfs๋กœ ํ’€๋‹ค๊ฐ€ ์ž๊พธ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์™€๋‹ค๋‹ฅ ๋–ด๋‹คใ