From 349ed868ce762200ce368dc3c32a22638b2f2c85 Mon Sep 17 00:00:00 2001 From: DABIN JEONG <41@b41.kr> Date: Wed, 16 Apr 2025 00:56:25 +0900 Subject: [PATCH 1/2] solve: validPalindrome --- valid-palindrome/b41-41.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 valid-palindrome/b41-41.ts 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(); +}; From 46aac57894f30f80e0d9e16b3ed7ed7affa8a4f3 Mon Sep 17 00:00:00 2001 From: DABIN JEONG <41@b41.kr> Date: Fri, 18 Apr 2025 07:54:28 +0900 Subject: [PATCH 2/2] solve: NumberOf1Bit --- number-of-1-bits/b41-41.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 number-of-1-bits/b41-41.ts 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(); +};