- Date : 2021.09.26(일)
- Time : 20분
- The complement of an integer is the integer you get when you flip all the 0's to 1's and all the 1's to 0's in its binary representation.
- For example, The integer 5 is "101" in binary and its complement is "010" which is the integer 2.
- Given an integer num, return its complement.
- 1 <= num < 2^31
- Input: num = 5
- Output: 2
- Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
def findComplement(self, num: int) -> int:
num = list(bin(num))[2:]
for i,n in enumerate(num):
num[i] = str(1-int(n))
return int("".join(num),2)
: 이 문제는 주어진 숫자 num을 2진수로 변환 후 보수로 변경 후 다시 10진수 값으로 변경해 답을 찾는 것이다. 그렇기 때문에 첫번째로는 num을 2진수로 변경해서 list로 넣어주었다. python 에서 bin
은 전달받은 integer 혹은 long integer 자료형의 값을 이진수(binary) 문자열로 돌려주는 내장함수이다. 앞자리에 2진수임을 나타내는 '0b'가 붙기 때문에 [2:]를 이용해서 떼고 배열에 넣어주었다. 그리고 이제 for문을 이용해서 한자리 씩 검사를 한다. 여기서는 enumerate
을 사용했는데 enumerate를 사용하면 (인덱스, 요소)가 출력되기 된다. 그렇기 때문에 여기서 i는 인덱스 , n은 요소값이 되는 것이다. for문을 통해 각각 값에 대해 보수로 변환
해준다. 보수는 0->1 1->0으로 변환시키면 된다. 그 이후 join을 통해 배열에 값을 하나로 합쳐준 후 2진수를 다시 10진수로 변경
해주면 끝이다.