๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋“ฑ๊ตฃ๊ธธ (level3, python)

๊ฐœ๋ฐœ์ž HOON 2022. 9. 13. 22:17

๋ฌธ์ œ ์„ค๋ช…

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

 

์•„๋ž˜ ๊ทธ๋ฆผ์€ m = 4, n = 3 ์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์™ผ์ชฝ ์œ„, ์ฆ‰ ์ง‘์ด ์žˆ๋Š” ๊ณณ์˜ ์ขŒํ‘œ๋Š” (1, 1)๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜, ์ฆ‰ ํ•™๊ต๊ฐ€ ์žˆ๋Š” ๊ณณ์˜ ์ขŒํ‘œ๋Š” (m, n)์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

๊ฒฉ์ž์˜ ํฌ๊ธฐ m, n๊ณผ ๋ฌผ์ด ์ž ๊ธด ์ง€์—ญ์˜ ์ขŒํ‘œ๋ฅผ ๋‹ด์€ 2์ฐจ์› ๋ฐฐ์—ด puddles์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ๊ณผ ์•„๋ž˜์ชฝ์œผ๋กœ๋งŒ ์›€์ง์—ฌ ์ง‘์—์„œ ํ•™๊ต๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋‹จ๊ฒฝ๋กœ์˜ ๊ฐœ์ˆ˜๋ฅผ 1,000,000,007๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

 

  • ๊ฒฉ์ž์˜ ํฌ๊ธฐ m, n์€ 1 ์ด์ƒ 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
    • m๊ณผ n์ด ๋ชจ๋‘ 1์ธ ๊ฒฝ์šฐ๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฌผ์— ์ž ๊ธด ์ง€์—ญ์€ 0๊ฐœ ์ด์ƒ 10๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ง‘๊ณผ ํ•™๊ต๊ฐ€ ๋ฌผ์— ์ž ๊ธด ๊ฒฝ์šฐ๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 


ํ’€์ด ์ฝ”๋“œ

def solution(m, n, puddles):
    answer = 0
    dp = [[0 for _ in range(m)] for _ in range(n)]
    dp[0][0] = 1
    
    for p in puddles:
        a, b = p
        dp[b-1][a-1] = -1
    
    for i in range(n):
        for j in range(m):
            if dp[i][j] == 0:
                if i-1 == -1 or (i-1 >= 0 and dp[i-1][j] == -1):
                    # ์œ„๊ฐ€ ๋ฒฝ์ด๊ฑฐ๋‚˜, ๋ฒฝ์€ ์•„๋‹Œ๋ฐ ์›…๋ฉ์ด์ธ ๊ฒฝ์šฐ
                    if j-1 == -1 or (j-1 >= 0 and dp[i][j-1] == -1):
                        continue
                    else:
                        dp[i][j] = dp[i][j-1]
                elif j-1 == -1 or (j-1 >= 0 and dp[i][j-1] == -1):
                    # ์™ผ์ชฝ์ด ๋ฒฝ์ด๊ฑฐ๋‚˜, ๋ฒฝ์€ ์•„๋‹Œ๋ฐ ์›…๋ฉ์ด์ธ ๊ฒฝ์šฐ
                    dp[i][j] = dp[i-1][j]
                else:
                    dp[i][j] = dp[i][j-1] + dp[i-1][j]
                    
    return dp[-1][-1] % 1_000_000_007

์ „ํ˜•์ ์ธ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์ œ์ด๋‹ค.

 

๋ฌธ์ œ์—์„œ ์ฃผ์˜๊นŠ๊ฒŒ ๋ณด์•„์•ผ ํ•  ํŠน์„ฑ์€, (1, 1) ์œ„์น˜์— ๋ฌด์กฐ๊ฑด ์ง‘์ด ์žˆ๊ณ  (m, n) ์œ„์น˜์— ๋ฌด์กฐ๊ฑด ํ•™๊ต๊ฐ€ ์žˆ๋‹ค.

์ด๋™์„ ํ•œ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜, ์•„๋ž˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋ฐ–์— ์—†๋‹ค.

๋”ฐ๋ผ์„œ ํ•œ ์นธ์— ๋Œ€ํ•ด์„œ ์ง์ „์˜ ์ด๋™์„ ๊ณ ๋ คํ•  ๋•Œ์—๋Š” ์œ„์—์„œ ๋‚ด๋ ค์™”๋Š”์ง€, ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์™”๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค.

 

 

์ด ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ํŽธํ•˜๋‹ค.

+ ํ‘œ์‹œ๊ฐ€ ๋œ ์นธ์€, ์™ผ์ชฝ์—์„œ ์ด๋™ํ•˜๊ฑฐ๋‚˜, ์œ„์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

๋”ฐ๋ผ์„œ dp ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํ•ด๊ฐ€๋ฉฐ ๋กœ์ง์„ ์™„์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

์ถ”๊ฐ€๋กœ ์ฝ”๋“œ์— ๋‚˜์˜จ ์ฃผ์„์„ ๋ณด๋ฉด, ์–ด๋–ป๊ฒŒ ์ƒ๊ฐ์„ ํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ํŽธํ•  ๊ฒƒ์ด๋‹ค.