From 19dd2f97f0a9ed432a35f7a44622e07d5c205435 Mon Sep 17 00:00:00 2001 From: leehyeyun Date: Fri, 28 Nov 2025 16:33:16 +0900 Subject: [PATCH 1/2] =?UTF-8?q?3=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- valid-palindrome/leehyeyun.js | 76 +++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 valid-palindrome/leehyeyun.js diff --git a/valid-palindrome/leehyeyun.js b/valid-palindrome/leehyeyun.js new file mode 100644 index 0000000000..8b1a739586 --- /dev/null +++ b/valid-palindrome/leehyeyun.js @@ -0,0 +1,76 @@ +/** + * @param {string} s + * @return {boolean} + */ +/* + 문자열이 주어졌을 때, + 이 문자열이 '유효한 회문(palindrome)'인지 판별하는 함수. + + 회문 판별 규칙: + - 대문자는 소문자로 변환한다. + - 영문자(a~z)와 숫자(0~9)만 남기고 나머지 문자는 제거한다. + - 정제된 문자열을 앞에서 읽은 것과 뒤에서 읽은 것이 같으면 회문이다. + + 요청 형식 : isPalindrome(s) + + 입력 형식 : + - s는 문자열(String) + - 1 <= s.length <= 2 * 10^5 + - 문자열은 ASCII 출력 문자로만 구성됨 + + 출력 형식 : + - 유효한 회문이면 true + - 아니면 false + + 예시 : + + Example 1 + 입력 : + s = "A man, a plan, a canal: Panama" + 출력 : + true + 설명 : + 정제하면 "amanaplanacanalpanama" + 회문이므로 true + + Example 2 + 입력 : + s = "race a car" + 출력 : + false + 설명 : + 정제하면 "raceacar" + 회문이 아님 + + Example 3 + 입력 : + s = " " + 출력 : + true + 설명 : + 정제 후 "" (빈 문자열) + 빈 문자열은 회문으로 간주됨 + + 제약사항 : + - 문자열의 길이가 매우 크므로 O(n) 방식이 적합함 +*/ +var isPalindrome = function(s) { + + let cleanString = s.toLowerCase().replace(/[^a-z0-9]/g, ''); + + let splitString = cleanString.split(""); + let reverseArray = splitString.reverse(); + let joinArray = reverseArray.join(""); + + if(cleanString != joinArray) + { + return false + }else { + return true + } +}; + +console.log(isPalindrome("A man, a plan, a canal: Panama")); +console.log(isPalindrome("race a car")); +console.log(isPalindrome(" ")); + From 6ad83f7dbbb4d5f1ccb05e31fb02b94517ac7777 Mon Sep 17 00:00:00 2001 From: leehyeyun Date: Fri, 28 Nov 2025 16:41:15 +0900 Subject: [PATCH 2/2] =?UTF-8?q?3=EC=A3=BC=EC=B0=A8=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number-of-1-bits/leehyeyun.js | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 number-of-1-bits/leehyeyun.js diff --git a/number-of-1-bits/leehyeyun.js b/number-of-1-bits/leehyeyun.js new file mode 100644 index 0000000000..77a8b924db --- /dev/null +++ b/number-of-1-bits/leehyeyun.js @@ -0,0 +1,72 @@ +/** + * @param {number} n + * @return {number} + */ +/* +양의 정수 n이 주어졌을 때, +이 정수를 2진수(binary)로 변환했을 때 +'1'로 설정된 비트(set bit)의 개수를 구하는 함수. + +이 값은 ‘해밍 가중치(Hamming Weight)’라고도 부른다. + +요청 형식 : hammingWeight(n) + +입력 형식 : + - n은 양의 정수 + - 1 <= n <= 2^31 - 1 + +출력 형식 : + - n의 이진 표현에서 '1'의 개수 (정수) + +예시 : + + Example 1 + 입력 : + n = 11 + 출력 : + 3 + 설명 : + 11 → 1011 (2진수) + 1이 총 3개 + + Example 2 + 입력 : + n = 128 + 출력 : + 1 + 설명 : + 128 → 10000000 + 1이 하나뿐 + + Example 3 + 입력 : + n = 2147483645 + 출력 : + 30 + 설명 : + 2147483645 → 1111111111111111111111111111101 + 1이 총 30개 + +제약사항 : + - 매 호출이 빠르게 동작해야 함 + - 팁: 비트를 하나씩 확인하는 반복문 or + n &= (n - 1) 같은 비트 최적화가 존재함 + +참고 : + - 만약 이 함수를 반복 호출해야 한다면, + 사전 계산된 lookup table을 사용하는 방식으로 + 추가 최적화할 수 있다. + +*/ +var hammingWeight = function(n) { + + let binaryString = n.toString(2); + let value = binaryString.split("").filter(x => x === "1").length; + + return value; +}; + +console.log(hammingWeight(11)); +console.log(hammingWeight(128)); +console.log(hammingWeight(2147483645)); +