십진수 시스템에 숫자가 있다고 가정합니다. 숫자의 보수를 이진 형식으로 얻은 다음 다시 십진수로 변경하고 결과를 반환해야 합니다. 따라서 숫자가 20이면 이진 형식은 10100이 되고 보수는 01011이 되며 십진수로 11이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s :=숫자 n의 이진 문자열
- 합계:=0 및 숫자:=1
- s의 각 요소 i에 대해 역방향으로
- i ='b'이면 합계를 반환합니다.
- 그렇지 않으면 i ='0'일 때 sum :=sum + num
- 숫자 :=숫자 * 2
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def bitwiseComplement(self, N): s = str(bin(N)) sum = 0 num = 1 for i in s[::-1]: if i == "b": return sum elif i =="0": sum+=num num*=2 ob1 = Solution() print(ob1.bitwiseComplement(20))
입력
20
출력
11