๋ฌธ์ :
๋ถ์ :
์ ๋ฌธ์ ๋ ์ ํ์ ์ธ DFS ๋ฌธ์ ์ด๋ค.
์ฒ์์๋ ์ค๋ฅธ์ชฝ๊ณผ ์๋์ชฝ์ผ๋ก ๋์๊ฐ๋ ๊ฒ๋ง ๊ณ ๋ คํ๊ณ ์ํํ ์ํ๋ฒณ์ set ํจ์์ ์ ์ฅํด ๋์์ผ์ง ์๊ฐํ์ฌ ์ ๊ทผํ์๋ค. ํ์ง๋ง ์์ข์ ์๊ณ ๋ฆฌ์ฆ์ด์๋ค ํํ
๋ง์ฝ ์งํ ์ค ๋์ผํ ์ํ๋ฒณ์ ๋ง๋๋ค๋ฉด ์งํํ ๊ฒ์ ์งํํ์ง ์์ ๊ฒ์ฒ๋ผ ํ์ฌ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ํ์ํ๋ ๊ฒ์ด ํฌ์ธํธ์๋ค. ์ฌ๊ทํจ์ ์ฌ์ฉํ๋๊ฒ ์ถ์์ ์ด๋ผ ์ ์ดํด๊ฐ์ง ์์ ๋ค๋ฅธ ๋ฌธ์ ๋ค๋ ๋ง์ด ํ์ด๋ด์ผ๊ฒ ๋ค. DFS, BFS๋ ๋ชจ๋ ์ฌ๊ท๋ก๋ฐ์ ํ ์ ์๋๊ฑด์ง๋ ๊ถ๊ธํด์ก๋ค. ๋ ๊ณต๋ถํด๋ด์ผ์ง
++ 21.04.21 ๋ณต์ต
๋ฌธ์ ์ ๋ช ์๋ "์๋ก ์ด๋ํ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ์ ์ง๊ธ๊น์ง ์ง๋์จ ๋ชจ๋ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ๊ณผ๋ ๋ฌ๋ผ์ผ ํ๋ค." ์ด ๊ตฌ๋ฌธ์ ํตํด ์ visit ๋ฅผ ์ค์ ํด ๊ฐ์ ๊ณณ ๋ฐฉ๋ฌธํ๋ฉด ์๋๋ ๊ตฐ! ํ๊ณ ํ์ ํ ์ ์๋ค.
c++ ์ฝ๋ :
//
// 1987_DFS.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/04.
//
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
bool visit[26];
char arr[20][20];
int C, R;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
int answer;
void DFS(int x, int y, int cnt){
answer = max(answer, 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(visit[arr[nx][ny] - 'A'] == false){
visit[arr[nx][ny] - 'A'] = true;
DFS(nx, ny, cnt + 1); // ๋ฐฉ๋ฌธํ์ผ๋ฏ๋ก cnt + 1
visit[arr[nx][ny] - 'A'] = false; //์ฌ๊ท์ ์ผ๋ก ๋ค ๋๊ณ ์์ ๋ ๋ค์ ์์ ๋
ธ๋์ ์ธ์ ๋
ธ๋ ๋ฐฉ๋ฌธ ์ํด์
}
}
}
}
int main(){
cin >> R >> C;
for(int i = 0; i < R; i++){
for(int j = 0; j < C; j++){
cin >> arr[i][j];
}
}
visit[arr[0][0] - 'A'] = true;
DFS(0,0,1);
cout << answer << endl;
return 0;
}
// char horse = arr[0][0];
// char next;
// set<char> nt;
// nt.insert(horse);
// int i = 0;
// int j =0;
// int count = 1;
// while(i < C && j < R){
// next = arr[i][++j];
// //cout << "next0 " << next <<endl;
//
// if(horse == next){
// if(*nt.find(next)){
// break;
// }
// next = arr[++i][--j];
// //cout << "next1 " << next <<endl;
// if(horse == next){
// //cout << "next2 " << next <<endl;
// break;
// }else{
// if(*nt.find(next)){
// break;
// }
// }
// nt.insert(next);
//
// }else{
// if(*nt.find(next)){
// break;
// }
// }
// count++;
// horse = next;
// }
// cout<< count << endl;
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2252 ์ค์ธ์ฐ๊ธฐ (0) | 2021.02.14 |
---|---|
[๋ฐฑ์ค] 10828 stack (0) | 2021.02.06 |
[๋ฐฑ์ค] 1915 ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ DP (0) | 2021.02.05 |
[๋ฐฑ์ค] 2470 ๋์ฉ์ก ์ด๋ถํ์ (0) | 2021.02.05 |
[๋ฐฑ์ค] 2467 ์ฉ์ก ์ด๋ถํ์ (2) | 2021.02.05 |
๋๊ธ