[LeetCode] Complement of Base 10 Integer

준규·2023년 1월 12일

1.문제


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 n, return its complement.


어떤 2진수가 주어질 때 2진수의 0은 1로 , 1은 0로 바뀐 수를 complement라고 할때 주어진 정수 n의 complement를 리턴하는 문제이다.


Example 1

Input: n = 5
Output: 2
Explanation: 5 is "101" in binary, with complement "010" in binary, which is 2 in base-10.

Example 2

Input: n = 7
Output: 0
Explanation: 7 is "111" in binary, with complement "000" in binary, which is 0 in base-10.

Example 3

Input: n = 10
Output: 5
Explanation: 10 is "1010" in binary, with complement "0101" in binary, which is 5 in base-10.

Constraints:

  • 0 <= n < 10^9

2.풀이

  1. 주어진 n을 2진수로 변환한다.
  2. 2진수의 0은 1 , 1은 0으로 변환한다.
  3. 변환한 2진수를 10진수로 변환하여 리턴한다.

/**
 * @param {number} n
 * @return {number}
 */
const bitwiseComplement = function (n) {
  const binary = n.toString(2).split(""); // 이진수로 변환한다.
  const result = [];

  for (let i = 0; i < binary.length; i++) {
    // 0 은 1로 , 1은 0으로 바꾸어서 result 배열에 넣어준다.
    if (binary[i] === "0") {
      result.push("1");
    } else {
      result.push("0");
    }
  }

  // 10진수로 바꿔서 리턴해준다
  return parseInt(result.join(""), 2);
};

profile
안녕하세요 :)

0개의 댓글