관리 메뉴

너와 나의 스토리

(BOJ) 12782 비트 우정지수 본문

Algorithm/기타

(BOJ) 12782 비트 우정지수

노는게제일좋아! 2019. 5. 25. 15:19
반응형

문제: https://www.acmicpc.net/problem/12782

 

문제 풀이:

index 01234567

     a: 00110100

     b: 10010111 가 주어졌을 때,

index 0, 2, 6, 7가 다르며 각각의 b의 값은 1 0 1 1이다.  (->one=3, zero=1)

즉, a와 다른 지점이 각각 0과 1이면 서로 바꿔주면된다.

1의 개수와 0의 개수 중 작은 값만큼 swap해주면 됨 -> min(one,zero)

그리고 남은 것들은 0은 1로, 1은 0으로 바꿔주면 됨 -> one+two-min(one,zero)*2

 

 

소스코드:

int tc;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL), cout.tie(NULL);

	cin >> tc;
	while (tc--) {
		string a, b;
		cin >> a >> b;
		int len = b.size();
		int one = 0, zero = 0;
		for (int i = 0; i < len; i++) {
			if (a[i] == b[i]) continue;
			if (b[i] == '1') one++;
			else zero++;
		}
		int t = min(one, zero);
		cout << t + (one + zero) - t * 2 << '\n';
	}
	return 0;
}
반응형
Comments