733. Flood Fill

๋Š˜๋ณดยท2021๋…„ 9์›” 24์ผ
0

LeetCode

๋ชฉ๋ก ๋ณด๊ธฐ
29/69

๐Ÿ’ก ํ’€์ด

var floodFill = function (image, sr, sc, newColor) {
  let oldColor = image[sr][sc];
  DFS(image, sr, sc, oldColor, newColor);
  return image;
};

var DFS = (image, x, y, oldColor, newColor) => {
  if (
    // ์—ฌ๊ธฐ ๋ถ€๋ถ„!
    x < 0 ||
    y < 0 ||
    x >= image.length ||
    y >= image[x].length ||
    image[x][y] === newColor ||
    image[x][y] !== oldColor
  )
    return;

  image[x][y] = newColor;
  DFS(image, x + 1, y, oldColor, newColor);
  DFS(image, x, y + 1, oldColor, newColor);
  DFS(image, x - 1, y, oldColor, newColor);
  DFS(image, x, y - 1, oldColor, newColor);
};

๐Ÿ“ ์ •๋ฆฌ

DFS๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ œ๋‹ค. ๊ทธ ๋™์•ˆ DFS, BFS์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋งค์šฐ ๋ถ€์กฑํ•ด์„œ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๊ฑฐ์˜ ํ’€์ง€ ๋ชปํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ์— ์ด ์˜์ƒ์„ ๋ณด๊ณ  ์กฐ๊ธˆ์€ ๋” ์ดํ•ด๋ฅผ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. DFS, BFS์— ๊ด€ํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ์˜์ƒ์„ ๋ณด๋Š”๊ฒŒ ํ›จ์”ฌ ์ดํ•ด๊ฐ€ ๋น ๋ฅผ ๊ฒƒ์ด๋‹ค.

ํ’€์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • image[x][y]๋ฅผ ํ•˜๋‚˜์˜ node๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

  • image[x][y] = oldColor๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ + 2์ฐจ์› ๋ฐฐ์—ด image์˜ ๋์ธ ๋ถ€๋ถ„(์œ„ ์ฝ”๋“œ์˜ ์ฃผ์„(!์—ฌ๊ธฐ๋ถ€๋ถ„)์„ ๋ณด์ž) + image[x][y]๊ฐ€ newColor ์ธ ๊ฒฝ์šฐ(๋ฌธ์ œ์—์„œ๋Š” ๋นจ๊ฐ„์ƒ‰) ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

  • if๋ฌธ์— ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” 4๊ฐœ์˜ DFS ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์žฌ๊ท€์ ์œผ๋กœ ๋„ค ๋ฐฉํ–ฅ์œผ๋กœ ๊ณ„์†ํ•ด์„œ ํƒ์ƒ‰์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

์ˆ˜์ •, ์ง€์ ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

๋ฌธ์ œ ๋งํฌ

https://leetcode.com/problems/flood-fill/

LeetCode GitHub

https://github.com/tTab1204/LeetCode

0๊ฐœ์˜ ๋Œ“๊ธ€