두개의 이진수를 각 자릿수를 뺸다.
--> 위가 0,아래가 1인 경우는 -1 / 위가 1, 아래가 0으로 다른 경우는 1이 나올것이다.
1과 -1은 페어가 되므로, 두개를 짝지어서 바꿔줌으로써 한번의 기회를 쓸 수 있다.
바꿀 수 있을만큼 바꿔주고, 남아있는 것은 0을 1로 뒤집어주는 1번연산을 사용해야 함.
def solve(A,B):
diff = [A[i]-B[i] for i in range(len(A))]
plus, negative = diff.count(1), diff.count(-1)
M,m = max(plus,negative), min(plus,negative)
return (M-m)+m
if __name__=='__main__':
T = int(input())
answers = []
for _ in range(T):
A,B = input().split()
A, B = list(map(int,A)), list(map(int,B))
answers.append(solve(A,B))
for ans in answers:
print(ans)
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 13305 : 주유소(그리디) (0) | 2021.08.21 |
---|---|
백준 14720: 우유 축제(DP) ** (0) | 2021.05.02 |
백준 11256 : 사탕 (그리디) (0) | 2021.04.22 |
백준 9440 : 숫자 더하기(그리디)*** (0) | 2021.03.12 |
백준 4796 : 캠핑(그리디) (0) | 2021.03.12 |