https://www.acmicpc.net/problem/3085
λ¬Έμ
μκ·Όμ΄λ μ΄λ Έμ μ μ "λ΄λ³΄λ (Bomboni)" κ²μμ μ¦κ²¨νλ€.
κ°μ₯ μ²μμ N×Nν¬κΈ°μ μ¬νμ μ±μ λλλ€. μ¬νμ μμ λͺ¨λ κ°μ§ μμ μλ μλ€. μκ·Όμ΄λ μ¬νμ μμ΄ λ€λ₯Έ μΈμ ν λ μΉΈμ κ³ λ₯Έλ€. κ·Έ λ€μ κ³ λ₯Έ μΉΈμ λ€μ΄μλ μ¬νμ μλ‘ κ΅ννλ€. μ΄μ , λͺ¨λ κ°μ μμΌλ‘ μ΄λ£¨μ΄μ Έ μλ κ°μ₯ κΈ΄ μ°μ λΆλΆ(ν λλ μ΄)μ κ³ λ₯Έ λ€μ κ·Έ μ¬νμ λͺ¨λ λ¨Ήλλ€.
μ¬νμ΄ μ±μμ§ μνκ° μ£Όμ΄μ‘μ λ, μκ·Όμ΄κ° λ¨Ήμ μ μλ μ¬νμ μ΅λ κ°μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ 보λμ ν¬κΈ° Nμ΄ μ£Όμ΄μ§λ€. (3 ≤ N ≤ 50)
λ€μ Nκ° μ€μλ 보λμ μ±μμ Έ μλ μ¬νμ μμμ΄ μ£Όμ΄μ§λ€. λΉ¨κ°μμ C, νλμμ P, μ΄λ‘μμ Z, λ Έλμμ Yλ‘ μ£Όμ΄μ§λ€.
μ¬νμ μμ΄ λ€λ₯Έ μΈμ ν λ μΉΈμ΄ μ‘΄μ¬νλ μ λ ₯λ§ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μκ·Όμ΄κ° λ¨Ήμ μ μλ μ¬νμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
νμ΄
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<vector<char>> candy;
int dx[] = {0, 1};
int dy[] = {1, 0};
int countCandy() {
// κ°μ₯ κΈ΄ μ°μ μ¬νμ κ°―μ λ°ν ν¨μ
int max_candy = 0;
// iλ²μ§Έ νμ κ°μ₯ κΈ΄ μ°μ κ°―μ ꡬνκΈ°
for(int i=0; i<n; i++) {
char prev = candy[i][0];
int cnt = 1;
for(int j=1; j<n; j++) {
if(prev == candy[i][j]) { // μ°μ
cnt++;
max_candy = max(max_candy, cnt);
} else { // λΆμ°μ
prev = candy[i][j];
cnt = 1;
}
}
}
// iλ²μ§Έ μ΄μ κ°μ₯ κΈ΄ μ°μ κ°―μ ꡬνκΈ°
for(int j=0; j<n; j++) {
char prev = candy[0][j];
int cnt = 1;
for(int i=1; i<n; i++) {
if(prev == candy[i][j]) {
cnt++;
max_candy = max(max_candy, cnt);
} else {
prev = candy[i][j];
cnt = 1;
}
}
}
return max_candy;
}
int solution() {
int ans = countCandy();
// λͺ¨λ μ¬νμ λν΄μ
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++){
// μ€λ₯Έμͺ½μ΄λ μλμͺ½ μ¬νκ³Ό κ΅ν
for(int dir=0; dir<2; dir++) {
int x = i + dx[dir];
int y = j + dy[dir];
if(x>=n || y>=n)
continue;
if(candy[i][j] == candy[x][y])
continue;
swap(candy[i][j], candy[x][y]);
ans = max(ans, countCandy());
swap(candy[i][j], candy[x][y]); // μ°μκ°―μ μ μ₯ν΄μ£Όκ³ λλ리기
}
}
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n;
candy.assign(n, vector<char>(n));
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
cin >> candy[i][j];
cout << solution();
return 0;
}
/*
*/
'ποΈ ICPC Sinchon > Simulation' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ S2][C++] λ°±μ€ 18111λ²: λ§μΈν¬λννΈ (0) | 2022.11.17 |
---|---|
[BOJ S4][C++] λ°±μ€ 1244λ²: μ€μμΉ μΌκ³ λκΈ° (0) | 2022.10.17 |
[BOJ S3][C++] λ°±μ€ 2503λ²: μ«μ μΌκ΅¬ (2%, 4%) (0) | 2022.10.06 |
[BOJ G5][C++] λ°±μ€ 20055λ²: μ»¨λ² μ΄μ΄ λ²¨νΈ μμ λ‘λ΄ (0) | 2022.10.03 |
[BOJ S1][C++] λ°±μ€ 20923λ²: μ«μ ν 리κ°λ¦¬ κ²μ (0) | 2022.09.30 |