본문 바로가기
프로그래밍/CodeUp

CodeUp[Q_2610] : 그림판 채우기

by 조원일 2020. 4. 5.
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;
}

'프로그래밍 > CodeUp' 카테고리의 다른 글

CodeUp[Q_2629] : 광역시  (0) 2020.04.08
CodeUp[Q_2628] : 케익 자르기  (0) 2020.04.07
CodeUp[Q_2607] : 쌍둥이 소수  (0) 2020.04.04
CodeUp[Q_2605] : 캔디팡  (0) 2020.04.03
CodeUp[Q_2604] : 실수를 기약 분수로 변환  (0) 2020.04.02