브루트 포스 문제를 많이 안 풀어봐서 그런지.. 코드짜기가 귀찮은 건지.. 아직 어렵다.. 근데 그냥 모든 경우의 수를 계산해보면 된다. 이거는 다른 사람의 코드를 참고했다.
#include<iostream> #include<algorithm> using namespace std; const int MAX = 51; int N; int maxLen = 1; char candy[MAX][MAX]; void check() { char c; for (int i = 0; i < N; i++) { int cnt = 1; c = candy[i][0]; for (int j = 1; j < N; j++) { if (candy[i][j] == c) cnt++; else { cnt= 1; c = candy[i][j]; } if (maxLen < cnt) maxLen = cnt; } } for (int j = 0; j < N; j++) { int cnt = 1; c = candy[0][j]; for (int i = 1; i < N; i++) { if (candy[i][j] == c) cnt++; else { cnt = 1; c = candy[i][j]; } if (maxLen < cnt) maxLen = cnt; } } } void bomboniGame() { for (int i = 0; i < N; i++) for (int j = 0; j < N-1; j++) { swap(candy[i][j], candy[i][j + 1]); check(); swap(candy[i][j], candy[i][j + 1]); } for (int j=0; j<N; j++) for (int i = 0; i < N- 1; i++) { swap(candy[i][j], candy[i + 1][j]); check(); swap(candy[i][j], candy[i + 1][j]); } cout << maxLen << endl; } void input() { cin >> N; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cin >> candy[i][j]; } } } int main() { input(); bomboniGame(); return 0; }
문제가 어려운 문제는 아닌데 귀찮고 반복문 돌릴 때 N의 범위를 주의해야 한다. 귀찮아도 브루트 포스 문제를 여러번 풀어보자!!!