Menu
CoddyTech

Flood Fill

쉬움그래프python iconjava iconcpp iconc iconjs icon+10

이미지는 각 숫자가 한 픽셀의 색상을 나타내는 정수 그리드입니다. 이미지가 행 목록으로 주어지고, 시작 픽셀의 행은 sr, 열은 sc이며, 새 color가 주어집니다. 시작 픽셀이 속한 영역을 다시 칠하세요. 즉, 시작 픽셀과 같은 색을 가진 픽셀 중 같은 색의 픽셀을 통해 위, 아래, 왼쪽 또는 오른쪽으로 이동하여 도달할 수 있는 모든 픽셀을 다시 칠합니다. 다시 칠한 후의 이미지를 반환하세요.

함수

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
이미지를 픽셀당 하나의 숫자로 이루어진 행 목록으로
srinteger
시작 픽셀의 행(0부터 셈)
scinteger
0부터 세는 시작 픽셀의 열
colorinteger
영역의 새로운 색상
반환값integer-2d-array
영역이 다시 그려진 후의 이미지

제약 조건

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • 모든 행의 길이가 같습니다.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length 그리고 0 ≤ sc < image[0].length

예제

입력
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
출력
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
설명
시작 지점에는 색상 1이 있습니다. 그 오른쪽의 1, 왼쪽 열 아래로 이어지는 1들과 맨 아래 행의 1들, 그리고 오른쪽 아래 모서리 바로 위의 1은 모두 시작 지점과 연결되어 있으므로, 일곱 개 모두 5가 됩니다. 두 개의 0은 다른 색이므로 그대로 유지됩니다.

lock icon제출 시 숨은 테스트 +18개

challenge icon

후속 질문

모서리에서만 맞닿은 픽셀도 연결된 것으로 간주한다면, 해법은 어떻게 달라질까요?

코드 초기화
def floodFill(image, sr, sc, color):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]
sr = 0
sc = 0
color = 5

기대값

[[5, 5, 0], [5, 0, 5], [5, 5, 5]]