Skip to content

Commit 8bc3990

Browse files
authored
Merge pull request #1299 from jeongwoo903/main
[jeongwoo903] Week 03 solutions
2 parents 7b0c6f8 + e7c0e90 commit 8bc3990

File tree

5 files changed

+111
-0
lines changed

5 files changed

+111
-0
lines changed

combination-sum/jeongwoo903.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* k: 후보 수
3+
* t: target / 최소 숫자
4+
* 시간 복잡도: O(k^t)
5+
* 공간 복잡도; O(k^t * t)
6+
*/
7+
8+
/**
9+
* @param {number[]} candidates
10+
* @param {number} target
11+
* @return {number[][]}
12+
*/
13+
14+
var combinationSum = function(candidates, target) {
15+
const combine = (sum, path, startIndex) => {
16+
if (sum > target) return [];
17+
if (sum === target) return [path];
18+
19+
return candidates
20+
.slice(startIndex)
21+
.flatMap((candidate, i) =>
22+
combine(sum + candidate, [...path, candidate], startIndex + i)
23+
);
24+
};
25+
26+
return candidates.flatMap((candidate, i) =>
27+
combine(candidate, [candidate], i)
28+
);
29+
};

decode-ways/jeongwoo903.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* 시간 복잡도: O(n)
3+
* 공간 복잡도; O(n)
4+
*/
5+
6+
/**
7+
* @param {string} s
8+
* @return {number}
9+
*/
10+
var numDecodings = function(s) {
11+
if (s.length === 0 || s[0] === "0") return 0;
12+
13+
let dp = new Array(s.length + 1).fill(0);
14+
15+
dp[0] = 1;
16+
dp[1] = 1;
17+
18+
for (let i = 2; i <= s.length; i++) {
19+
let single = s[i - 1];
20+
let double = s[i - 2] + s[i - 1];
21+
22+
if (single >= 1 && single <= 9) dp[i] += dp[i - 1];
23+
if (double >= 10 && double <= 26) dp[i] += dp[i - 2];
24+
}
25+
26+
return dp[s.length];
27+
};

maximum-subarray/jeongwoo903.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* 시간 복잡도: O(n)
3+
* 공간 복잡도: O(1)
4+
*/
5+
6+
/**
7+
* @param {number[]} nums
8+
* @return {number}
9+
*/
10+
var maxSubArray = function(nums) {
11+
let max = nums[0];
12+
let result = nums[0];
13+
14+
for (let index = 1; index < nums.length; index++) {
15+
const num = nums[index];
16+
result = Math.max(result + num, num);
17+
max = Math.max(max, result);
18+
}
19+
20+
return max;
21+
};

number-of-1-bits/jeongwoo903.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* 시간 복잡도: O(log n)
3+
* 공간 복잡도; O(log n)
4+
*/
5+
6+
/**
7+
* @param {number} n
8+
* @return {number}
9+
*/
10+
var hammingWeight = function(n) {
11+
const dec = n.toString(2);
12+
const parsedBits = [...dec].filter(item => item === '1');
13+
return parsedBits.length;
14+
};

valid-palindrome/jeongwoo903.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* 시간 복잡도: O(n)
3+
* 공간 복잡도; O(n)
4+
*
5+
* 과정:
6+
* 1. 소문자, 대문자, 숫자만 파싱
7+
* 2. 소문자로 변환
8+
* 3. 리버스 스트링과 기본 스트링과 대조
9+
*/
10+
11+
/**
12+
* @param {string} s
13+
* @return {boolean}
14+
*/
15+
var isPalindrome = function(s) {
16+
const parsedString = s.replace(/[^a-zA-Z0-9]/g, '');
17+
const lowerString = parsedString.toLowerCase();
18+
const reverseString = lowerString.split("").reverse().join("");
19+
return reverseString === lowerString;
20+
};

0 commit comments

Comments
 (0)