본문 바로가기

공부하는 것들/알고리즘

백준 12782 : 비트 우정지수(그리디)

www.acmicpc.net/problem/12782

 

12782번: 비트 우정지수

진홍이는 숫자를 좋아한다. 오늘도 숫자를 가지고 놀던 진홍이는 두 숫자의 비트 우정지수를 구해보았다. 비트 우정지수란, 10진법으로 나타낸 두 정수를 이진수로 나타내었을 때, 두 숫자를 같

www.acmicpc.net

 

두개의 이진수를 각 자릿수를 뺸다. 

--> 위가 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)