가로
한 번 그리디 알고리즘을 시행할 때마다 전체 셀 개수인
#include <bits/stdc++.h>
char rev(char x) {
return 'H' + 'T' - x;
}
int get_min(const std::string& s) {
return (int) std::min(std::count(s.begin(), s.end(), 'H'), std::count(s.begin(), s.end(), 'T'));
}
int min_case(std::vector<std::string> vec, int mask) {
int n = vec.size();
for (int j = 0; j < n; ++j) {
if (mask & (1 << j)) {
for (int i = 0; i < n; ++i) {
vec[i][j] = rev(vec[i][j]);
}
}
}
int ret = 0;
for (const auto& s : vec) {
ret += get_min(s);
}
return ret;
}
void solve() {
int n;
std::cin >> n;
std::vector<std::string> vec(n);
for (auto& s : vec) std::cin >> s;
int ret = n * n;
for (int i = 0; i < (1 << n); ++i) {
ret = std::min(ret, min_case(vec, i));
}
std::cout << ret << "\n";
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
solve();
return 0;
}
https://www.acmicpc.net/problem/1285
1285번: 동전 뒤집기
첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위
www.acmicpc.net
'Computer Science > PS' 카테고리의 다른 글
| 2024 SCPC (삼성 대학생 프로그래밍 경진대회) 1차 예선 후기 (1) | 2024.07.06 |
|---|---|
| 2023 제2회 미적확통컵 출제 후기 (0) | 2023.12.24 |
| ICPC 2023 본선 후기 (망함) (8) | 2023.11.26 |
| [백준 26105] Folding Stick (ICPC 2022 Seoul Regional D; Platinum III) (0) | 2023.08.27 |
| [백준 28399] 황혼 (UCPC 2023 본선; Platinum IV) (0) | 2023.08.11 |
댓글