JLOG
[Python] 코드업 2610 : 그림판 채우기 본문
https://codeup.kr/problem.php?id=2610
10*10 크기의 그림에 그림판 색 채우기 기능을 구현하라
(단, 원점은 왼쪽 위 끝이고, xx 값은 오른쪽, yy 값은 아래로 갈수록 증가한다.)
입력
10∗1010∗10 크기의 그림과 색칠할 좌표의 x,y 값이 차례로 입력된다.
출력
색 채우기를 한 결과를 출력한다.
# Code up #2610 : 그림판 채우기
# https://codeup.kr/problem.php?id=2610
paint = []
for i in range(10) : #{
paint.append(list(input()))
#}
y, x = list(map(int, input().split(" ")))
'''
#FOR TESTING
str_paint = ['__________',
'_____****_',
'_____*__*_',
'__*******_',
'__*__*_**_',
'__*__****_',
'__*____*__',
'__*____*__',
'__******__',
'__________']
paint = []
for p in str_paint :
paint.append(list(p))
x, y = [4,4]
'''
# 해당 위치가 채워져 있는지 확인하고 채워주는 함수
def check(x, y) : #{
global paint
if paint[x][y] == '_' :
paint[x][y] = "*"
return 1
else : return 0
#}
# 상하좌우로 이동하면서 채워야 하는지 확인하는 함수
# 만약 채워야하면 그 좌표에서 다시 확인하도록 fill_paint를 return
def go_left(x, y) : #{
x = x-1
print("go_left")
print(x,y)
if check(x,y) == 1 :return fill_paint(x,y)
#}
def go_right(x, y) : #{
x = x+1
print("go_right")
print(x,y)
if check(x,y) == 1 :return fill_paint(x,y)
#}
def go_up(x, y) : #{
y = y-1
print("go_up")
print(x,y)
if check(x,y) == 1 :return fill_paint(x,y)
#}
def go_down(x, y) : #{
y = y+1
print("go_down")
print(x,y)
if check(x,y) == 1 : return fill_paint(x,y)
#}
# 좌표를 받으면 좌표에서부터 상하좌우로 채워야 하는지 확인하는 함수
def fill_paint(x, y) : #{
if x > 0 : go_left(x, y)
if x < 9 : go_right(x, y)
if y > 0 : go_up(x, y)
if y < 9 : go_down(x, y)
#}
# 맨 처음 좌표가 채워져 있을 때는 함수를 실행하지 않음
if check(x,y) == 1 : fill_paint(x, y)
# string 형식으로 print 하기 위해 list를 string으로 변환
str_paint = []
for p in paint : #{
str_paint.append("".join(p))
#}
print("\n".join(str_paint))
주의
해당 좌표는 0,0 부터 시작한다.
즉, 3, 5이면 네번째줄의 여섯번째 위치이다.
list 인덱싱으로 해당 위치를 가져오려면 list[y][x] 형식으로 입력되여야한다.
그래서, 입력시에 x,y를 거꾸로 입력 받아서 list[x][y] 형식으로 사용했다
string 자체를 인덱싱으로 값을 변환할 수 없어서 모두 list 형식으로 변환 후 다시 string 형식으로 변환했다.
'Algorithm > 알고리즘 풀이' 카테고리의 다른 글
[Python] 코드업 3501 : RGB(small) 풀이 (1) | 2020.08.28 |
---|---|
[Python] 코드업 3021 : 큰 수 덧셈 풀이 (0) | 2020.05.28 |
[Python] 코드업 #3130 : 소들의 헤어스타일 (0) | 2020.05.22 |
[Python] 코드업 #2605 : 캔디팡 풀이 (2) | 2020.05.19 |
[Python] 코드업 4040 : 펜션 풀이 (0) | 2020.05.16 |
Comments