728x90
반응형
https://www.acmicpc.net/problem/3085
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<vector<char>>arr;
int check() {
//최대 연속 갯수
//행,열
int cnt1 = 1;
int cnt2 = 1;
int maxs = 1;
for (int i = 0; i < n; i++) {
cnt1 = 1;
cnt2 = 1;
for (int j = 1; j < n; j++) {
if (arr[i][j - 1] == arr[i][j]) {
cnt1++;
maxs = max(maxs, cnt1);
}
else cnt1 = 1;
if (arr[j - 1][i] == arr[j][i]) {
cnt2++;
maxs = max(maxs, cnt2);
}
else cnt2 = 1;
}
}
return maxs;
}
int main() {
cin >> n;
arr.assign(n, vector<char>(n, 0));
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
//C P Z Y
//인접한 두칸 변경 오른쪽, 아래
for (int i = 0; i < n; i++) {
for (int j = 0; j < n-1; j++) {
//오른쪽 변경
if (arr[i][j] != arr[i][j + 1]) {
char tmp = arr[i][j];
arr[i][j] = arr[i][j + 1];
arr[i][j + 1] = tmp;
ans=max(ans,check());
arr[i][j + 1] = arr[i][j];
arr[i][j] = tmp;
}
//위아래 변경
if (arr[j][i] != arr[j+1][i]) {
char tmp = arr[j][i];
arr[j][i] = arr[j + 1][i];
arr[j + 1][i] = tmp;
ans = max(ans, check());
arr[j + 1][i] = arr[j][i];
arr[j][i] = tmp;
}
}
}
cout << ans;
}
틀렸습니다
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<vector<char>>arr;
int check() {
//최대 연속 갯수
//행,열
int cnt1 = 1;
int cnt2 = 1;
int maxs = 0;
for (int i = 0; i < n; i++) {
cnt1 = 1; cnt2 = 1;
for (int j = 0; j < n-1; j++){
//헹
if (arr[i][j] == arr[i][j + 1])cnt1++;
else {
if (cnt2 > 1) {
maxs = max(cnt2, maxs);
}
cnt1 = 1;
}
//열
if (arr[j][i] == arr[j+1][i])cnt2++;
else {
if (cnt2 > 1) {
maxs = max(cnt2, maxs);
}
cnt2 = 1;
}
}
if (cnt1 > 1) {
maxs = max(cnt1, maxs);
}
if (cnt2 > 1) {
maxs = max(cnt2, maxs);
}
}
return maxs;
}
int main() {
cin >> n;
arr.assign(n, vector<char>(n, 0));
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
//C P Z Y
//인접한 두칸 변경 오른쪽, 아래
for (int i = 0; i < n; i++) {
for (int j = 0; j < n-1; j++) {
//오른쪽 변경
if (arr[i][j] != arr[i][j + 1]) {
char tmp = arr[i][j];
arr[i][j] = arr[i][j + 1];
arr[i][j + 1] = tmp;
ans=max(ans,check());
arr[i][j + 1] = arr[i][j];
arr[i][j] = tmp;
}
//위아래 변경
if (arr[j][i] != arr[j+1][i]) {
char tmp = arr[j][i];
arr[j][i] = arr[j + 1][i];
arr[j + 1][i] = tmp;
ans = max(ans, check());
arr[j + 1][i] = arr[j][i];
arr[j][i] = tmp;
}
}
}
cout << ans;
}
행열 카운트 부분 바꿨는데 통과
왜맞앗지
728x90
반응형
'하루 1문제 챌린지 > Silver2' 카테고리의 다른 글
백준 12891번 DNA 비밀번호(C++) (0) | 2024.03.02 |
---|---|
백준 10971번 외판원순회2 (C++) 🚩 (0) | 2024.03.01 |
백준 18111번 마인크래프트 (C++) 🚩 (1) | 2024.02.18 |