편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2022.06.02

    파이썬 주어진 두 입력값을 이진수로 바꾸어 비교하는 문제


    w1과 w2는 각 수를 이진수로 바꾸었을 시의 1의 개수이고, d는 두 수를 비교했을 시의 같은 자리 수에서 각각 0과 1이 따로 나오는 개수입니다.

    최대한 풀었고 답도 맞는 것 같는데 어딘가 틀렸다고 하네요. 혹시 도와주실 수 있으면 부탁드립니다.

    testcase= int(input())
    for i in range(testcase):
        num1, num2 = map(int, input().split())
        b1 = int(bin(num1)[2:])
        b2 = int(bin(num2)[2:])
        s1 = bin(num1)[2:]
        s2 = bin(num2)[2:]
        ans1 = 0
        ans2 = 0
        while b1 :
            b1 //= 10
            ans1 += 1
        while b2 :
            b2 //= 10
            ans2 += 1
        w1 = 0
        w2 = 0
        d = 0
        for j in range(ans1):
            if s1[j] == '1' :
                w1 += 1
        for k in range(ans2):
            if s2[k] == '1' :
                w2 += 1
        while ans1 > ans2 :
            s2 ='0' + s2
            ans2 += 1
            if ans1 == ans2 :
                for l in range(ans1):
                    if s1[l] != s2[l]:
                        d += 1
        while ans2 > ans1 :
            s1 ='0' + s1
            ans1 += 1
            if ans1 == ans2:
                for m in range(ans1):
                    if s1[m] != s2[m]:
                        d += 1
        print(w1,w2,d, sep=" ")
    
  • 프로필 우효록님의 편집
    날짜2022.05.31

    파이썬 문제


    w1과 w2는 각 수를 이진수로 바꾸었을 시의 1의 개수이고요, d는 두 수를 비교했을 시의 같은 자리 수에서 각각 0과 1이 따로 나오는 개수입니다. 최대한 풀었고 답도 맞는 것 같는데 어딘가 틀렸다고 하네요... 혹시 도와주실 수 있으면 부탁드립니다.

    testcase= int(input())
    for i in range(testcase):
        num1, num2 = map(int, input().split())
        b1 = int(bin(num1)[2:])
        b2 = int(bin(num2)[2:])
        s1 = bin(num1)[2:]
        s2 = bin(num2)[2:]
        ans1 = 0
        ans2 = 0
        while b1 :
            b1 //= 10
            ans1 += 1
        while b2 :
            b2 //= 10
            ans2 += 1
        w1 = 0
        w2 = 0
        d = 0
        for j in range(ans1):
            if s1[j] == '1' :
                w1 += 1
        for k in range(ans2):
            if s2[k] == '1' :
                w2 += 1
        while ans1 > ans2 :
            s2 ='0' + s2
            ans2 += 1
            if ans1 == ans2 :
                for l in range(ans1):
                    if s1[l] != s2[l]:
                        d += 1
        while ans2 > ans1 :
            s1 ='0' + s1
            ans1 += 1
            if ans1 == ans2:
                for m in range(ans1):
                    if s1[m] != s2[m]:
                        d += 1
        print(w1,w2,d, sep=" ")