[LeetCode] Complement of Base 10 Integer

준규·2023년 1월 12일
0

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개의 댓글