diff --git a/number-of-1-bits/nowrobin.js b/number-of-1-bits/nowrobin.js new file mode 100644 index 000000000..cf33dc9b8 --- /dev/null +++ b/number-of-1-bits/nowrobin.js @@ -0,0 +1,21 @@ +/** + * @param {number} n - 32비트 정수 + * @return {number} - 이진수에서 1의 개수 + */ +var hammingWeight = function(n) { + let setBitCount = 0; // 1의 개수를 저장할 변수 + + // n이 0이 될 때까지 반복 (모든 1비트를 제거할 때까지) + while (n !== 0) { + // 가장 오른쪽에 있는 1비트를 제거 + // 예: 101100 -> 101000 + n &= (n - 1); + + // 1비트 하나 제거했으므로 카운트 증가 + setBitCount++; + } + + // 총 1의 개수 반환 + return setBitCount; +}; + diff --git a/valid-palindrome/nowrobin.js b/valid-palindrome/nowrobin.js new file mode 100644 index 000000000..cc4fdecae --- /dev/null +++ b/valid-palindrome/nowrobin.js @@ -0,0 +1,23 @@ +/** + * @param {string} s + * @return {boolean} + */ +var isPalindrome = function(s) { + // 1. 소문자로 변환 + 알파벳/숫자만 남기기 + // (공백, 특수문자 제거) + s = s.toLowerCase().replace(/[^a-z0-9]/g, ""); + + const length = s.length; + + // 2. 문자열의 절반만 순회하면서 양쪽 비교 + for (let i = 0; i < length / 2; i++) { + // 왼쪽(i) vs 오른쪽(length - 1 - i) + if (s[i] !== s[length - 1 - i]) { + // 하나라도 다르면 팰린드롬 아님 + return false; + } + } + + // 3. 끝까지 문제 없으면 팰린드롬 + return true; +};