https://www.acmicpc.net/problem/13413
13413번: 오셀로 재배치
로봇을 좋아하는 세희는 로봇동아리에서 카메라와 센서, 라즈베리 파이, 집게발을 이용해 로봇을 완성하였다. 이 로봇을 통해서 오셀로 재배치라는 작업을 하려고 한다. 오셀로 말은 앞면이 검
www.acmicpc.net
두가지 작업 중에 첫번째 작업을 하는것이 당연히 훨씬 이득이기 때문에,
첫번째 작업을 최대한 많이 진행할 수 있게 만들어주면 되는 그리디 문제에 해당한다.
일단 문자열 A와 B의 i번째 문자 $A_i$, $B_i$ 에 대해서,
각각 W,B 에 해당하는경우 N와
B,W에 해당하는 경우 M를 세준다.
W,B와 B,W 쌍이 만들어지는 경우, 첫번째 작업을 진행할 수 있으므로
두번의 두번째 작업을 사용할 필요가 없으므로,
정답은 N과 M 중 보다 큰 숫자를 출력하면 된다.
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
int n;
int A=0, B=0;
string a,b;
cin >> n;
cin >> a >> b;
for(int i=0; i<n; i++){
if(a[i] == b[i]) continue;
if(a[i]=='W' && b[i]=='B') A++;
if(a[i]=='B' && b[i]=='W') B++;
}
cout << max(A,B) << "\n";
}
return 0;
}
반응형