프로그래밍/CodeUp
CodeUp[Q_2610] : 그림판 채우기
조원일
2020. 4. 5. 18:15
728x90
1. 문제
https://codeup.kr/problem.php?id=2610
그림판 채우기
$10*10$ 크기의 그림이 있다. 이 그림에 그림판 색 채우기 기능을 구현하시오. (단, 원점은 왼쪽 위 끝이고, $x$ 값은 오른쪽, $y$ 값은 아래로 갈수록 증가한다.)
codeup.kr
[출처 : 코드업(https://codeup.kr/)]
이번 문제는 그림판의 색 채우기 기능을 간략하게 구현해보는 문제입니다.
이번 문제 또한 재귀 함수를 사용하면 쉽게 해결할 수 있습니다.
2. 풀이방법
STEP 1. 주어진 좌표(x, y)부터 상,하,좌,우를 확인하여 '-'이면 '*'로 색칠한다.
3. 해답
#include <stdio.h>
void paint(char Arr[10][11], int x, int y) {
if (x < 0 || x > 9) return 0;
if (y < 0 || y > 9) return 0;
if (Arr[x][y] == '*') return 0;
Arr[x][y] = '*';
paint(Arr, x - 1, y); // 좌
paint(Arr, x + 1, y); // 우
paint(Arr, x, y - 1); // 상
paint(Arr, x, y + 1); // 하
}
int main() {
int x, y;
char Arr[10][11];
for (int i = 0; i < 10; i++) {
scanf("%s", Arr[i]);
}
scanf("%d %d", &x, &y);
paint(Arr, y, x);
for (int i = 0; i < 10; i++) {
printf("%s\n", Arr[i]);
}
return 0;
}