Koder / 박성훈
article thumbnail

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;
}

 

반응형