728x90
<문제 링크>
https://leetcode.com/problems/flood-fill/
<문제 풀이>
- 주어진 image [sr][sc]에서 위, 아래, 왼쪽, 오른쪽에 있는 값이 처음 image [sr][sc]와 동일하면 newColor로 변경한다.
- 변경한 값의 위, 아래, 왼쪽, 오른쪽 값도 변경한다. (반복)
<코드>
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
<고쳐야 할 점>
- 다양한 테스트 케이스 접해보기
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[동적계획법] 릿코드 Medium 120 'Triangle' (Python) (0) | 2022.01.21 |
---|---|
[BFS] 릿코드 Medium 695 'Max Area of Island' (Python) (0) | 2022.01.18 |
[기타] 릿코드 Easy 557 'Reverse Words in a String III' (Python) (0) | 2022.01.13 |
[기타] 릿코드 Easy 344 'Reverse String' (Python) (0) | 2022.01.13 |
[정렬] 릿코드 Easy 167 'Two Sum II - Input Array Is Sorted' (Python) (0) | 2022.01.13 |