Skip to content

Commit 3e1d624

Browse files
authored
Merge pull request #351 from hyejjun/main
[혜준] Week2 문제 풀이
2 parents e2b469a + c67f669 commit 3e1d624

File tree

3 files changed

+106
-0
lines changed

3 files changed

+106
-0
lines changed

counting-bits/hyejjun.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {number} n
3+
* @return {number[]}
4+
*/
5+
var countBits = function (n) {
6+
7+
let result = [];
8+
9+
for (let i = 0; i <= n; i++) {
10+
11+
let binary = i.toString(2);
12+
let sum = 0;
13+
14+
for (let char of binary) {
15+
sum += Number(char);
16+
}
17+
result.push(sum);
18+
}
19+
20+
return result;
21+
22+
};
23+
24+
25+
console.log(countBits(2));
26+
console.log(countBits(5));
27+
28+
/*
29+
시간 복잡도: O(n * log n)
30+
공간 복잡도: O(n)
31+
*/

decode-ways/hyejjun.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
6+
var numDecodings = function (s) {
7+
if (s == null || s.length === 0) {
8+
return 0;
9+
}
10+
11+
const n = s.length;
12+
const dp = new Array(n + 1).fill(0);
13+
dp[0] = 1;
14+
dp[1] = s[0] === '0' ? 0 : 1;
15+
16+
for (let i = 2; i <= n; i++) {
17+
const oneDigit = parseInt(s.substring(i - 1, i));
18+
const twoDigits = parseInt(s.substring(i - 2, i));
19+
20+
// Check if single digit decoding is possible
21+
if (oneDigit >= 1 && oneDigit <= 9) {
22+
dp[i] += dp[i - 1];
23+
}
24+
25+
// Check if two digit decoding is possible
26+
if (twoDigits >= 10 && twoDigits <= 26) {
27+
dp[i] += dp[i - 2];
28+
}
29+
}
30+
31+
return dp[n];
32+
};
33+
34+
35+
console.log(numDecodings("12"));
36+
console.log(numDecodings("226"));
37+
console.log(numDecodings("06"));
38+
39+
/*
40+
시간 복잡도: O(n)
41+
공간 복잡도: O(n)
42+
*/

valid-anagram/hyejjun.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} t
4+
* @return {boolean}
5+
*/
6+
var isAnagram = function (s, t) {
7+
if (s.length !== t.length) return false;
8+
9+
let countS = {};
10+
let countT = {};
11+
12+
for (let i = 0; i < s.length; i++) {
13+
countS[s[i]] = (countS[s[i]] || 0) + 1;
14+
countT[t[i]] = (countT[t[i]] || 0) + 1;
15+
}
16+
17+
for (let key in countS) {
18+
if (countS[key] !== countT[key]) {
19+
return false;
20+
}
21+
}
22+
23+
return true;
24+
25+
};
26+
27+
console.log(isAnagram("anagram", "nagaram"));
28+
console.log(isAnagram("rat", "car"));
29+
30+
/*
31+
시간 복잡도: O(n)
32+
공간 복잡도: O(n)
33+
*/

0 commit comments

Comments
 (0)