diff --git a/counting-bits/hyejjun.js b/counting-bits/hyejjun.js new file mode 100644 index 000000000..48f97d9c4 --- /dev/null +++ b/counting-bits/hyejjun.js @@ -0,0 +1,31 @@ +/** + * @param {number} n + * @return {number[]} + */ +var countBits = function (n) { + + let result = []; + + for (let i = 0; i <= n; i++) { + + let binary = i.toString(2); + let sum = 0; + + for (let char of binary) { + sum += Number(char); + } + result.push(sum); + } + + return result; + +}; + + +console.log(countBits(2)); +console.log(countBits(5)); + +/* +시간 복잡도: O(n * log n) +공간 복잡도: O(n) +*/ diff --git a/decode-ways/hyejjun.js b/decode-ways/hyejjun.js new file mode 100644 index 000000000..83b4d5f0d --- /dev/null +++ b/decode-ways/hyejjun.js @@ -0,0 +1,42 @@ +/** + * @param {string} s + * @return {number} + */ + +var numDecodings = function (s) { + if (s == null || s.length === 0) { + return 0; + } + + const n = s.length; + const dp = new Array(n + 1).fill(0); + dp[0] = 1; + dp[1] = s[0] === '0' ? 0 : 1; + + for (let i = 2; i <= n; i++) { + const oneDigit = parseInt(s.substring(i - 1, i)); + const twoDigits = parseInt(s.substring(i - 2, i)); + + // Check if single digit decoding is possible + if (oneDigit >= 1 && oneDigit <= 9) { + dp[i] += dp[i - 1]; + } + + // Check if two digit decoding is possible + if (twoDigits >= 10 && twoDigits <= 26) { + dp[i] += dp[i - 2]; + } + } + + return dp[n]; +}; + + +console.log(numDecodings("12")); +console.log(numDecodings("226")); +console.log(numDecodings("06")); + +/* +시간 복잡도: O(n) +공간 복잡도: O(n) +*/ diff --git a/valid-anagram/hyejjun.js b/valid-anagram/hyejjun.js new file mode 100644 index 000000000..1888ce81e --- /dev/null +++ b/valid-anagram/hyejjun.js @@ -0,0 +1,33 @@ +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function (s, t) { + if (s.length !== t.length) return false; + + let countS = {}; + let countT = {}; + + for (let i = 0; i < s.length; i++) { + countS[s[i]] = (countS[s[i]] || 0) + 1; + countT[t[i]] = (countT[t[i]] || 0) + 1; + } + + for (let key in countS) { + if (countS[key] !== countT[key]) { + return false; + } + } + + return true; + +}; + +console.log(isAnagram("anagram", "nagaram")); +console.log(isAnagram("rat", "car")); + +/* +시간 복잡도: O(n) +공간 복잡도: O(n) +*/