ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋“ฑ๊ตฃ๊ธธ

๊ณ„์†๋˜๋Š” ํญ์šฐ๋กœ ์ผ๋ถ€ ์ง€์—ญ์ด ๋ฌผ์— ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š์€ ์ง€์—ญ์„ ํ†ตํ•ด ํ•™๊ต๋ฅผ ๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง‘์—์„œ ํ•™๊ต๊นŒ์ง€ ๊ฐ€๋Š” ๊ธธ์€ m x n ํฌ๊ธฐ์˜ ๊ฒฉ์ž๋ชจ์–‘์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ m =

programmers.co.kr

 

๋ฌธ์ œ ํ’€์ด

์ง‘์—์„œ ํ•™๊ต๊นŒ์ง€ ๊ฐ€๋Š” ๊ธธ์€ MxN ์ผ ๋•Œ, ํญ์šฐ๋กœ ์ธํ•ด ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ธธ์ด ์žˆ๋‹ค. ์ด๋•Œ, ๋“ฑ๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ๋Š” x, y์— ๋”ฐ๋ฅธ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€  ์ˆ˜ ์žˆ๋‹ค.

 

 

 ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„์—์„œ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 0์„ ์ถ”๊ฐ€ํ•œ DP ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ ์ถœ๋ฐœ์ ์ธ ์ง‘์„ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ ์ ํ™”์‹์ธ `dp[x][y] = dp[x - 1][y] + dp[x][y - 1]`์„ ๊ฐ ์ง€์ ๋งˆ๋‹ค ์›…๋ฉ์ด๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ณ  ๊ธฐ๋กํ•˜๋ฉด ๋œ๋‹ค. ์ ํ™”์‹์€ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ•˜๋‚˜์˜ ์ขŒํ‘œ๋กœ๋ถ€ํ„ฐ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ๋Š” ์œ„์˜ ๊ทธ๋ฆผ์˜ ํ™”์‚ดํ‘œ์™€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ฝ”๋“œ

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

    for x in range(1, n + 1):
        for y in range(1, m + 1):
            if x == y == 1:
                continue

            if [y, x] in puddles:
                answer[x][y] = 0
            else:
                answer[x][y] = answer[x - 1][y] + answer[x][y - 1]
    return answer[-1][-1] % 1000000007
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€