Publish:

ํƒœ๊ทธ: , , , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

img_3.png

๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ

img_3.png

์„ค๋ช…

๋กœ๋ด‡์ด ๊ฒฉ์ž ์™ผ์ชฝ ์ƒ๋‹จ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ ๋๊นŒ์ง€ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ. ์ด์ „ ๋ฌธ์ œ์™€ ๊ตฌํ˜„ ๋ฐฉ์‹์€ ๊ฐ™๋‹ค. ๋‹จ, ์ค‘๊ฐ„์— ์žฅ์• ๋ฌผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ์ชฝ์œผ๋กœ๋Š” ๊ฐˆ ์ˆ˜ ์—†๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ๋‹ค.

ํ’€์ด

  1. dp ๋ฐฐ์—ด ์ •์˜ : (i,j) ์˜์—ญ์— ๋„๋‹ฌํ•˜๋Š” ๊ฒฝ๋กœ์˜ ์ˆ˜
    • (i,0) / (0,j) ์ค„์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ฏ€๋กœ ๋ฏธ๋ฆฌ ์ฑ„์›Œ ๋†“๋Š”๋‹ค.
    • ์žฅ์• ๋ฌผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ 0, ์•„๋‹Œ ๊ฒฝ์šฐ 1๋กœ ์„ธํŒ…ํ•œ๋‹ค.
      • ์žฅ์• ๋ฌผ ์ดํ›„์˜ ๊ฒฝ๋กœ๋Š” ๋ชป์ง€๋‚˜๊ฐ€๋ฏ€๋กœ break
  2. ์ ํ™”์‹ ๋„์ถœ : ๋ฌธ์ œ์—์„œ ๋กœ๋ด‡์€ ์˜ค๋ฅธ์ชฝ ๋˜๋Š” ์•„๋ž˜ ๋กœ ๋ฐ–์— ์›€์ง์ด์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ (i, j) ์˜์—ญ์— ๋„๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ + ์œ„์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
    • dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
    • ์žฅ์• ๋ฌผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ(obstacleGrid[i][j] == 1) ๊ทธ ๊ฒฝ๋กœ์—” ๋„๋‹ฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ 0์œผ๋กœ ์„ธํŒ…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
  public int uniquePathsWithObstacles(int[][] obstacleGrid) {
    int m = obstacleGrid.length;
    int n = obstacleGrid[0].length;
    int[][] dp = new int[m][n];

    for (int i = 0; i < m; i++) {
      if (obstacleGrid[i][0] == 1) {
        dp[i][0] = 0;
        break;
      } else {
        dp[i][0] = 1;
      }
    }

    for (int i = 0; i < n; i++) {
      if (obstacleGrid[0][i] == 1) {
        dp[0][i] = 0;
        break;
      } else {
        dp[0][i] = 1;
      }
    }

    for (int i = 1; i < m; i++) {
      for (int j = 1; j < n; j++) {
        if (obstacleGrid[i][j] == 1) {
          dp[i][j] = 0;
        } else {
          dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
        }
      }
    }
    return dp[m - 1][n - 1];
  }
}
๋ฐฉ๋ฌธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋Œ“๊ธ€,์ง€์ ,ํ”ผ๋“œ๋ฐฑ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜Š

๐Ÿ˜€

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ