diff --git a/number-of-1-bits/b41-41.ts b/number-of-1-bits/b41-41.ts new file mode 100644 index 000000000..f37743f1d --- /dev/null +++ b/number-of-1-bits/b41-41.ts @@ -0,0 +1,38 @@ +function hammingWeight(n: number): number { + + // 풀이 1: + // binary로 변환 후 1 count + // 시간 복잡도: O(log n) + // 공간 복잡도: O(log n) + const getResult1 = () => { + const binaryNum = n.toString(2); + + let count = 0; + + for(let i = 0; i < binaryNum.length; i++) { + if(binaryNum.charAt(i) === '1') { + count++ + } + } + + return count; + }; + + // 풀이 2: + // 비트 연산을 활용할 수 있다고 함 (From GPT) + // 시간 복잡도: O(log n) + // 공간 복잡도: O(1) + // const getResult2 = () => { + // let count = 0; + + // while (n !== 0) { + // count += n & 1; + // n >>>= 1; + // } + + // return count; + // } + + return getResult1(); + // return getResult2(); +}; diff --git a/valid-palindrome/b41-41.ts b/valid-palindrome/b41-41.ts new file mode 100644 index 000000000..9fa3efd87 --- /dev/null +++ b/valid-palindrome/b41-41.ts @@ -0,0 +1,23 @@ +function isPalindrome(s: string): boolean { + + // 풀이 1: + // lowcase 변환, 졍규식으로 문자 이외 필터 + // 필터된 문자열 순회하면서 (i, length - i) + // 전부 일치하면 true 아니면 false + // 시간 복잡도: O(n) + // 공간 복잡도: O(n) + + const validPalindrome1 = () => { + const sanitizedStrArr = [...s.toLowerCase().replace(/[^a-z0-9]/g, "")]; + + for(let i = 0; i < Math.floor(sanitizedStrArr.length / 2); i++) { + if(sanitizedStrArr[i] !== sanitizedStrArr[(sanitizedStrArr.length - 1) - i]) { + return false; + } + } + + return true; + } + + return validPalindrome1(); +};