코드업(codeup)/C
코드업(codeup) 2605 : 캔디팡 C언어
starfish22
2022. 7. 30. 22:08
728x90
▶문제 : 캔디팡 (codeup.kr)
캔디팡
최근 캔디팡이라는 스마트폰 게임이 인기를 끌고 있다. 캔디팡은 7 * 7 모양의 격자 판에 같은 색깔이 연속 3개 이상인 부분을 찾아 터치하면 터지면서 점수를 얻는 게임이다. 이때 연속된 부분은
codeup.kr
▶코드 작성
#include <stdio.h>
int arr[7][7];
int func(int i, int j) {
int color = arr[i][j];
if (color == 0) return 0;//이미 탐색이 끝난 곳
arr[i][j] = 0;//현재 위치 i,j 탐색완료 : 0
int cnt = 1;
if (color == arr[i - 1][j] && i > 0) cnt += func(i - 1, j); //상
if (color == arr[i + 1][j] && i < 6) cnt += func(i + 1, j); //하
if (color == arr[i][j - 1] && j > 0) cnt += func(i, j - 1); //좌
if (color == arr[i][j + 1] && j < 6) cnt += func(i, j + 1); //우
return cnt;
}
int main() {
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
scanf("%d", &arr[i][j]);
}
}
int cnt = 0;
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (func(i, j) >= 3) cnt++;//근접한 같은 색의 칸 개수가 3이상이면 cnt++
}
}
printf("%d", cnt);
return 0;
}
▶해석
주어진 7x7크기의 arr배열을 전체 탐색하면서 상, 하, 좌, 우로 근접한 칸이 같은 색인지 확인하여 재귀 호출하였다.
이때 main에서 탐색한 arr [i][j] 칸과 근접한 같은 색의 칸은 한 번 탐색하면 더 이상 탐색하지 않아도 되므로 0을 대입하여 탐색이 끝났음을 나타냈다.
728x90