Skip to content

Commit c3e3c21

Browse files
authored
Merge pull request #1787 from jun0811/main
[jun0811] WEEK 03 solutions
2 parents 24f2788 + 36a3ba1 commit c3e3c21

File tree

5 files changed

+109
-0
lines changed

5 files changed

+109
-0
lines changed

combination-sum/jun0811.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {number[]} candidates
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
var combinationSum = function (candidates, target) {
7+
const result = [];
8+
candidates.sort((a, b) => a - b);
9+
function backTracking(start, arr, total) {
10+
if (total == target) {
11+
result.push([...arr]);
12+
return;
13+
}
14+
15+
for (let i = start; i < candidates.length; i++) {
16+
const cur = candidates[i];
17+
if (cur + total > target) {
18+
return;
19+
}
20+
21+
backTracking(i, [...arr, cur], total + cur);
22+
}
23+
}
24+
25+
backTracking(0, [], 0);
26+
return result;
27+
};

decode-ways/jun0811.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
6+
function check(str) {
7+
if (str.length == 2) {
8+
if (str[0] == '0') return false;
9+
}
10+
if (str >= 1 && str <= 26) return true;
11+
return false;
12+
}
13+
14+
var numDecodings = function (s) {
15+
if (s[0] == '0') return 0;
16+
const dp = [1, 1];
17+
18+
for (let i = 2; i <= s.length; i++) {
19+
let tmp = dp[i - 1] + dp[i - 2];
20+
21+
// 2글자 체크 -> dp[i-2]을 뺴줌
22+
const two_c = String(s[i - 2]) + String(s[i - 1]);
23+
if (!check(two_c)) tmp -= dp[i - 2];
24+
25+
// 1글자 체크 -> dp[i-1]을 빼줌
26+
if (!check(s[i - 1])) tmp -= dp[i - 1];
27+
28+
if (tmp == 0) return 0;
29+
dp[i] = tmp;
30+
}
31+
return dp[s.length];
32+
};

maximum-subarray/jun0811.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var maxSubArray = function (nums) {
6+
const dp = [nums[0]];
7+
for (let i = 1; i < nums.length; i++) {
8+
const cur = nums[i];
9+
if (dp[i - 1] < 0) dp[i] = cur;
10+
else {
11+
dp[i] = dp[i - 1] + cur;
12+
}
13+
}
14+
return Math.max(...dp);
15+
};

number-of-1-bits/jun0811.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
* @param {number} n
33
* @return {number}
44
*/
5+
6+
// 1주차에 풀이 후 제출..
7+
58
var hammingWeight = function (n) {
69
let res = 0;
710
while (n > 0) {

valid-palindrome/jun0811.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
var isPalindrome = function (s) {
2+
let left = 0;
3+
let right = s.length - 1;
4+
5+
while (left < right) {
6+
while (left < right && !isAlphaNumeric(s[left])) {
7+
left++;
8+
}
9+
10+
while (left < right && !isAlphaNumeric(s[right])) {
11+
right--;
12+
}
13+
14+
if (s[left].toLowerCase() !== s[right].toLowerCase()) {
15+
return false;
16+
}
17+
18+
left++;
19+
right--;
20+
}
21+
22+
return true;
23+
};
24+
25+
function isAlphaNumeric(char) {
26+
const code = char.charCodeAt(0);
27+
return (
28+
(code >= 48 && code <= 57) || // 0-9
29+
(code >= 65 && code <= 90) || // A-Z
30+
(code >= 97 && code <= 122)
31+
); // a-z
32+
}

0 commit comments

Comments
 (0)