바위타는 두루미
8.10 영역 칠하기 본문
728x90
문제
이미지 편집 프로그램에서 흔히 쓰이는 '영역 칠하기'함수를 구현하여라
영역 칠하기 함수는 화면(색이 칠해진 이차원 배열)과 그 화면상의 한 지점, 그리고 새로운 색상이 주어졌을때, 그 주어진 지점과 색이 같은 인접한 주변 영역을 새로운 색상으로 색칠하여라
해결법
DFS나 BFS같은 탐색법으로 해결할 수 있다.
재귀를 사용하는 단원이니 재귀를 사용해서 풀기 위해 DFS로 해결해 보겟다.
import enum
class Color(enum.Enum) :
Black = 0
White = 1
Red = 2
Yellow= 3
Green = 4
def ChangeColor(map, point, oldColor, newColor):
if point[0]<0 or point[0]>=len(map) or point[1]<0 or point[1] >= len(map[0]) :
return
y = point[0]
x = point[1]
if map[y][x] == oldColor :
map[y][x] = newColor
ChangeColor(map, (y-1,x) , oldColor , newColor) #위
ChangeColor(map, (y,x+1) , oldColor , newColor) #오른쪽
ChangeColor(map, (y+1,x) , oldColor , newColor) #아래
ChangeColor(map, (y,x-1) , oldColor , newColor) #왼쪽
return
def Solution(map, point, newColor):
oldColor = map[point[0]][point[1]]
ChangeColor(map, point, oldColor, newColor)
return map
'Study > Interview준비' 카테고리의 다른 글
8.12 여덟개의 퀸 (0) | 2019.08.05 |
---|---|
8.11 코인 (0) | 2019.08.05 |
8.9 괄호 (0) | 2019.08.05 |
8.8 중복있는 순열 (0) | 2019.08.05 |
8.7 중복없는 순열 (0) | 2019.08.04 |
Comments