[완전탐색] 백준 3085번 사탕 게임
2021. 2. 22. 11:58ㆍ알고리즘 문제분석
수행시간 : 30분 + 30분(예외케이스 테스트시간)
BFS로 접근했다가, 세로는 세로로만 연속되고, 가로는 가로로만 연속되는 걸 count 해줘야 되기때문에 그냥 브루트포스로 풀었다. 역시 브루트포스는 처음 알고리즘 구상부분이 가장 힘든거 같다..
#include <iostream>
#include <algorithm>
using namespace std;
int n;
char map[51][51];
int maxCnt = 0;
void column(char arr[51][51], int s) { //세로
for (int i = 0; i < s; i++) {
int cnt = 1;
for (int j = 0; j < s;j++) {
if (arr[i][j] == arr[i][j + 1]) {
cnt++;
}
else {
if (cnt > maxCnt) {
maxCnt = cnt;
}
cnt = 1;
}
}
}
}
void row(char arr[51][51], int s) { //가로
for (int i = 0;i < s;i++) {
int cnt = 1;
for (int j = 0;j < s;j++) {
if (arr[j][i] == arr[j + 1][i]) {
cnt++;
}
else {
if (cnt > maxCnt) {
maxCnt = cnt;
}
cnt = 1;
}
}
}
}
int main() {
cin >> n;
for (int i = 0; i < n;i++) {
for (int j = 0;j < n;j++) {
cin >> map[i][j];
}
}
for (int i = 0; i < n;i++) {
for (int j = 0; j < n-1;j++) {
swap(map[i][j], map[i][j + 1]);
column(map, n);
row(map, n);
swap(map[i][j + 1], map[i][j]);
swap(map[j][i], map[j + 1][i]);
column(map, n);
row(map, n);
swap(map[j + 1][i], map[j][i]);
}
}
cout << maxCnt;
}
'알고리즘 문제분석' 카테고리의 다른 글
[완전탐색] 백준 1051 숫자 정사각형 (0) | 2021.03.06 |
---|---|
[구현] 백준 2564 경비원 (0) | 2021.03.06 |
[DFS] 백준 1325 효율적인 해킹 (0) | 2021.02.18 |
[구현] 백준 14891 톱니바퀴 (0) | 2021.02.17 |
[C++] vector/queue 새롭게 알게된 내용 정리 (0) | 2021.02.15 |