728x90
풀이
입력된 대문자 알파벳의 아스키코드 값을 이용해,
한 번이라도 방문한 적 없는 경우에만 탐색해 최대의 칸 수를 구하면 된다.
소스코드
#include <stdio.h>
#include <stdbool.h>
char arr[20][20];
bool visited[26];
int R, C, result;
int dx[4] = {-1, 1}, dy[4] = {0, 0, -1, 1};
void BT(int x, int y, int cnt){
cnt > result && (result = cnt);
for (int i = 0; i < 4; i++){
int nx = x + dx[i], ny = y + dy[i];
if (nx >= 0 && ny >= 0 && nx < R && ny < C){
int idx = arr[nx][ny] - 65;
if (!visited[idx]){
visited[idx] = true;
BT(nx, ny, cnt + 1);
visited[idx] = false;
}
}
}
}
int main(){
scanf("%d %d", &R, &C);
for(int i = 0; i < R; i++)
for (int j = 0; j < C; j++)
scanf(" %c", &arr[i][j]);
visited[arr[0][0]-65] = true;
BT(0, 0, 1);
printf("%d", result);
}
출처
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 1188] 음식 평론가 [C] (0) | 2021.09.02 |
---|---|
[백준 2436] 공약수 [C] (0) | 2021.09.01 |
[백준 11790] Primorial vs LCM [C] (0) | 2021.08.31 |
[백준 11414] LCM [C] (0) | 2021.08.31 |
[백준 11690] LCM(1, 2, ..., n) [C] (0) | 2021.08.30 |