풀이
모든 경우의 수를 다 해보면 되는 문제.
코드
#include <iostream>
#include <set>
#include <vector>
using namespace std;
char table[5][5];
set<string> s;
void input() {
for(int i=0;i<5;++i) {
for(int j=0;j<5;++j) {
cin >> table[i][j];
}
}
}
bool rangeCheck(int nx, int ny) {
return 0 <= nx && nx < 5 && 0 <= ny && ny < 5;
}
vector<char> temp;
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
void dfs(int y, int x) {
if(temp.size() == 6) {
string make = "";
for(int i=0;i<temp.size(); ++i) {
make += temp[i];
}
s.insert(make);
return;
}
for(int k=0;k<4;++k) {
int nx = x + dx[k];
int ny = y + dy[k];
if(rangeCheck(nx, ny)) {
temp.push_back(table[ny][nx]);
dfs(ny, nx);
temp.pop_back();
}
}
}
void processing() {
for(int i=0;i<5;++i) {
for(int j=0;j<5;++j) {
temp.push_back(table[i][j]);
dfs(i, j);
temp.pop_back();
}
}
cout << s.size();
}
int main() {
input();
processing();
}
'알고리즘' 카테고리의 다른 글
백준 4902 삼각형의 값 c++ (0) | 2020.09.17 |
---|---|
백준 2916 자와 각도기 c++ (0) | 2020.09.15 |
백준 2933 미네랄 C++ 풀이 (0) | 2020.09.12 |
백준 2776 CPP, js (0) | 2020.09.04 |
[javascript] b1072.js (0) | 2020.09.03 |