Skip to content

Commit 84f4816

Browse files
authored
Merge pull request #2092 from JangAyeon/main
[JangAyeon] WEEK 03 Solutions
2 parents fb5e363 + 5e78fe8 commit 84f4816

File tree

5 files changed

+106
-0
lines changed

5 files changed

+106
-0
lines changed

combination-sum/JangAyeon.js

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

decode-ways/JangAyeon.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
var numDecodings = function (s) {
2+
const N = s.length;
3+
const memo = {};
4+
5+
function dfs(i) {
6+
if (i === N) return 1;
7+
if (s[i] === "0") return 0; // 0은 단독으로 decode 불가능
8+
if (memo[i] !== undefined) return memo[i];
9+
10+
// 1자리
11+
let count = dfs(i + 1);
12+
13+
// 2자리
14+
if (i + 1 < N && Number(s.slice(i, i + 2)) <= 26) {
15+
count += dfs(i + 2);
16+
}
17+
18+
memo[i] = count;
19+
return count;
20+
}
21+
22+
return dfs(0);
23+
};

maximum-subarray/JangAyeon.js

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

number-of-1-bits/JangAyeon.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var hammingWeight = function (n) {
6+
function calDivision(num) {
7+
return { v: Math.floor(num / 2), rest: num % 2 };
8+
}
9+
let num = n;
10+
let result = 0;
11+
while (true) {
12+
const { v, rest } = calDivision(num);
13+
result += rest;
14+
if (v == 0) {
15+
break;
16+
}
17+
num = v;
18+
}
19+
20+
return result;
21+
};

valid-palindrome/JangAyeon.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isPalindrome = function (s) {
6+
const sLowered = [...s.toLowerCase().replace(" ", "")];
7+
const isAlpha = (item) => item.charCodeAt() >= 97 && item.charCodeAt() <= 122;
8+
const isNumber = (item) => item.charCodeAt() >= 48 && item.charCodeAt() <= 57;
9+
const str = sLowered.filter((c) => isAlpha(c) || isNumber(c));
10+
const N = str.length;
11+
let [start, end] = [0, N - 1];
12+
while (start <= end) {
13+
if (str[start] != str[end]) {
14+
return false;
15+
}
16+
start++;
17+
end--;
18+
}
19+
return true;
20+
};

0 commit comments

Comments
 (0)