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:
2.풀이
- 주어진 n을 2진수로 변환한다.
- 2진수의 0은 1 , 1은 0으로 변환한다.
- 변환한 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);
};
