int dx[] = { 1, -1, 0, 0 }; int dy[] = { 0, 0, 1, -1 }; int r, c; vector<string> a; map<char, bool> m;
int ans = 0; voiddfs(int x, int y, int cnt){
ans = max(ans, cnt); // 이동한 최댓값을 구함
for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i];
if (nx >= 0 && ny >= 0 && nx < r && ny < c) { if (!m[a[nx][ny]]) { // 아직 한번도 밟지 않은 알파벳인 경우 m[a[nx][ny]] = true; // 방문 처리 dfs(nx, ny, cnt + 1); } } } m[a[x][y]] = false; // 방문 처리 해제