문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
정수의 보수는 이진 표현에서 모든 0을 1로, 모든 1을 0으로 바꾼 정수이다.
주어진 정수 num의 보수를 반환해라.
#1
Input: num = 5
Output: 2
Explanation: 5의 이진 표현은 101(앞에 0이 없음)이고, 그 보수는 010이다. 따라서 2를 출력해야 한다.
#2
Input: num = 1
Output: 0
Explanation: 1의 이진 표현은 1(앞에 0이 없음)이고, 그 보수는 0이다. 따라서 0을 출력해야 한다.
class Solution {
public int findComplement(int num) {
if(num == 0) return 1;
int bitLength = Integer.toBinaryString(num).length();
int mask = (1 << bitLength) - 1;
return num ^ mask;
}
}