바위타는 두루미

8.10 영역 칠하기 본문

Study/Interview준비

8.10 영역 칠하기

DoRoMii 2019. 8. 5. 10:38
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