[LeetCode] Number Complement

아르당·2026년 1월 18일

LeetCode

목록 보기
97/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

정수의 보수는 이진 표현에서 모든 0을 1로, 모든 1을 0으로 바꾼 정수이다.

  • 예를 들어, 정수 5는 2진수로 "101"이고, 그 보수는 "010"으로 정수 2이다.

주어진 정수 num의 보수를 반환해라.

Example

#1
Input: num = 5
Output: 2
Explanation: 5의 이진 표현은 101(앞에 0이 없음)이고, 그 보수는 010이다. 따라서 2를 출력해야 한다.

#2
Input: num = 1
Output: 0
Explanation: 1의 이진 표현은 1(앞에 0이 없음)이고, 그 보수는 0이다. 따라서 0을 출력해야 한다.

Constraints

  • 1 <= num < 2^31

Solved

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;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글