Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions combination-sum/jeongwoo903.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* k: 후보 수
* t: target / 최소 숫자
* 시간 복잡도: O(k^t)
* 공간 복잡도; O(k^t * t)
*/

/**
* @param {number[]} candidates
* @param {number} target
* @return {number[][]}
*/

var combinationSum = function(candidates, target) {
const combine = (sum, path, startIndex) => {
if (sum > target) return [];
if (sum === target) return [path];

return candidates
.slice(startIndex)
.flatMap((candidate, i) =>
combine(sum + candidate, [...path, candidate], startIndex + i)
);
};

return candidates.flatMap((candidate, i) =>
combine(candidate, [candidate], i)
);
};
27 changes: 27 additions & 0 deletions decode-ways/jeongwoo903.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* 시간 복잡도: O(n)
* 공간 복잡도; O(n)
*/

/**
* @param {string} s
* @return {number}
*/
var numDecodings = function(s) {
if (s.length === 0 || s[0] === "0") return 0;

let dp = new Array(s.length + 1).fill(0);

dp[0] = 1;
dp[1] = 1;

for (let i = 2; i <= s.length; i++) {
let single = s[i - 1];
let double = s[i - 2] + s[i - 1];

if (single >= 1 && single <= 9) dp[i] += dp[i - 1];
if (double >= 10 && double <= 26) dp[i] += dp[i - 2];
}

return dp[s.length];
};
21 changes: 21 additions & 0 deletions maximum-subarray/jeongwoo903.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/*
* 시간 복잡도: O(n)
* 공간 복잡도: O(1)
*/

/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let max = nums[0];
let result = nums[0];

for (let index = 1; index < nums.length; index++) {
const num = nums[index];
result = Math.max(result + num, num);
max = Math.max(max, result);
}

return max;
};
14 changes: 14 additions & 0 deletions number-of-1-bits/jeongwoo903.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* 시간 복잡도: O(log n)
* 공간 복잡도; O(log n)
*/

/**
* @param {number} n
* @return {number}
*/
var hammingWeight = function(n) {
const dec = n.toString(2);
const parsedBits = [...dec].filter(item => item === '1');
return parsedBits.length;
};
20 changes: 20 additions & 0 deletions valid-palindrome/jeongwoo903.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* 시간 복잡도: O(n)
* 공간 복잡도; O(n)
*
* 과정:
* 1. 소문자, 대문자, 숫자만 파싱
* 2. 소문자로 변환
* 3. 리버스 스트링과 기본 스트링과 대조
*/

/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
const parsedString = s.replace(/[^a-zA-Z0-9]/g, '');
const lowerString = parsedString.toLowerCase();
const reverseString = lowerString.split("").reverse().join("");
return reverseString === lowerString;
};