Skip to content

Commit de8ae3d

Browse files
authored
Merge pull request #2035 from robinyoon-dev/main
[robinyoon-dev] WEEK 02 solutions
2 parents e89ab38 + fa5ed09 commit de8ae3d

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed

climbing-stairs/robinyoon-dev.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var climbStairs = function(n) {
6+
//(n) = f(n - 1) + f(n - 2)
7+
let tempArray = [];
8+
9+
for(let i = 0; i <= n; i++){
10+
if(i === 0 || i === 1){
11+
tempArray.push(1);
12+
}else{
13+
let tempSum = 0;
14+
tempSum = tempArray[i - 2] + tempArray[i - 1];
15+
tempArray.push(tempSum);
16+
}
17+
}
18+
return tempArray[n];
19+
};
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var productExceptSelf = function (nums) {
6+
7+
const NUMS_LENGTH = nums.length;
8+
const isZeroArray = []; //boolean
9+
let zeroCount = 0;
10+
11+
let totalProduct = nums.reduce((acc, item) => {
12+
if (item === 0) {
13+
zeroCount++;
14+
isZeroArray.push(true);
15+
return acc;
16+
} else {
17+
isZeroArray.push(false);
18+
return acc * item;
19+
}
20+
}, 1);
21+
22+
// 엣지 케이스 대비 1: nums의 요소 중 0이 두 개 이상인 경우
23+
if (zeroCount >= 2) {
24+
totalProduct = 0;
25+
}
26+
27+
const tempArray = [];
28+
29+
for (let i = 0; i < NUMS_LENGTH; i++) {
30+
if (isZeroArray[i] === true) {
31+
tempArray.push(totalProduct);
32+
} else if (zeroCount >= 1) {
33+
// 엣지 케이스 대비 2: isZeroArray[i]가 false 더라도 nums의 요소 중 zero가 하나라도 있는 경우
34+
// (지금 보니 이 부분은 zeroCount === 1로 했어도 될 것 같네요...)
35+
tempArray.push(0);
36+
} else {
37+
tempArray.push(totalProduct / nums[i]);
38+
}
39+
}
40+
41+
return tempArray;
42+
};
43+

valid-anagram/robinyoon-dev.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} t
4+
* @return {boolean}
5+
*/
6+
var isAnagram = function (s, t) {
7+
//1. s와 t를 Array로 만든다.
8+
const sArray = s.split("");
9+
const tArray = t.split("");
10+
11+
//2. sArray와 tArray의 sort를 같게 만든다.
12+
const sortedSArray = sArray.sort();
13+
const sortedTArray = tArray.sort();
14+
15+
//3. sArray와 tArray가 같은지 판별한다.
16+
const result = JSON.stringify(sortedSArray) === JSON.stringify(sortedTArray);
17+
18+
//4. 같으면 true를, 다르면 false를 반환한다.
19+
return result;
20+
21+
};

0 commit comments

Comments
 (0)