문제접근
•
자리를 바꾸는게 최소 연산의 핵심. 따라서, 흰 → 검의 수와 검 → 흰의 수를 비교하여 결국 흰검은 흰색이 현재 더 많다를 의미, 검흰은 현재 검은색이 더 많다를 의미하기 때문에 둘 중 더 많은 수와 적은 수의 차만큼 교체 연산이 이루어지고 나머지는 뒤집어 색상을 바꾸는 방식을 택해야함
→ 흰검, 검흰 중 더 많은 수를 선택하면 됨
놓쳤던 부분
코드
2692 KB
76 ms
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(void) {
int t;
int n;
string input;
string target;
int answer = 0;
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
for (int testCase = 0; testCase < t; testCase++) {
cin >> n;
cin >> input >> target;
int whiteToBlack = 0;
int blackToWhite = 0;
for (int i = 0; i < n; i++) {
if (input[i] == 'W' && input[i] != target[i])
whiteToBlack++;
else if (input[i] == 'B' && input[i] != target[i])
blackToWhite++;
}
answer = max(whiteToBlack, blackToWhite);
cout << answer << "\n";
}
return (0);
}
C++
복사