본문 바로가기

두두의 알고리즘/문제

[BFS] 릿코드 Easy 733 'Flood Fill' (Python)

728x90

<문제 링크>

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

 

Flood Fill - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


<문제 풀이>

  1. 주어진 image [sr][sc]에서 위, 아래, 왼쪽, 오른쪽에 있는 값이 처음 image [sr][sc]와 동일하면 newColor로 변경한다.
  2. 변경한 값의 위, 아래, 왼쪽, 오른쪽 값도 변경한다. (반복)

<코드>

class Solution:
    def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]:
        
        dx = [-1,0,1,0] 
        dy = [0,-1,0,1]
        
        q = []
        if image[sr][sc] != newColor:
            q = [(sr,sc)]
        point = image[sr][sc]
        image[sr][sc] = newColor
        
            
        while q:
            sr2,sc2 = q.pop(0)
            for i in range(4):
                nx = sr2 + dx[i]
                ny = sc2 + dy[i]
                if nx>=0 and nx<len(image) and ny>=0 and ny<len(image[0]):
                    if image[nx][ny]==point:
                        image[nx][ny] = newColor
                        q.append((nx,ny))
        
        return image

 

<고쳐야 할 점>

  • 다양한 테스트 케이스 접해보기