[LeetCode] Complement of Base 10 Integer

아르당·2026년 3월 23일

LeetCode

목록 보기
218/263
post-thumbnail

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

Problem

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

  • 예를 들어, 정수 5는 이진 표현으로 101이고, 보수는 010으로 정수 2가 된다.

정수 n이 주어졌을 때, 보수를 반환해라.

Example

#1
Input: n = 5
Output: 2
Explanation: 5는 이진 표현으로 101이고, 보수는 010이 되며 10진수로 2가 된다.

#2
Input: n = 7
Output: 0
Explanation: 7은 이진 표현으로 111이고, 보수는 000이 되며 10진수로 0가 된다.

#3
Input: n = 10
Output: 5

Constraints

  • 0 <= n < 10^9

Solved

class Solution {
    public int bitwiseComplement(int n) {
        if(n == 0){
            return 1;
        }

        int mask = n;
        
        for(int i = 0; i <= 4; i++){
            mask |= mask >> (1 << i);
        }

        return ~n & mask;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글