Skip to content

Commit 16a6c67

Browse files
authored
Merge pull request #1150 from krokerdile/main
[krokerdile] WEEK 01 Solutions
2 parents 293da73 + 985dc96 commit 16a6c67

File tree

5 files changed

+135
-0
lines changed

5 files changed

+135
-0
lines changed

contains-duplicate/krokerdile.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {boolean}
4+
*/
5+
6+
/**
7+
* 1차 풀이
8+
* - Map을 사용하여 각 숫자의 개수를 세는 방법
9+
*/
10+
var containsDuplicate = function(nums) {
11+
let dict = new Map();
12+
13+
nums.forEach((num)=>{
14+
if(dict.has(num)){
15+
dict.set(num, dict.get(num)+1);
16+
}else{
17+
dict.set(num, 1);
18+
}
19+
})
20+
21+
for (const num of nums) {
22+
if(dict.get(num) >= 2){
23+
return true;
24+
}
25+
}
26+
return false;
27+
};
28+
29+
/**
30+
* 2차풀이
31+
* - Map을 사용하여 각 숫자의 개수를 세는 방법
32+
* - forEach를 사용하지 않고 for of문을 사용하여 반복문을 돌리는 방법
33+
*/
34+
var containsDuplicate = function(nums) {
35+
let dict = new Map();
36+
37+
for (const num of nums) {
38+
if(dict.has(num)){
39+
dict.set(num, dict.get(num)+1);
40+
}else{
41+
dict.set(num, 1);
42+
}
43+
if(dict.get(num) >= 2){
44+
return true;
45+
}
46+
}
47+
return false;
48+
};

house-robber/krokerdile.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function(nums) {
6+
if (nums.length === 0) return 0;
7+
if (nums.length === 1) return nums[0];
8+
9+
let dp = new Array(nums.length);
10+
dp[0] = nums[0];
11+
dp[1] = Math.max(nums[0], nums[1]);
12+
13+
for (let i = 2; i < nums.length; i++) {
14+
dp[i] = Math.max(dp[i - 1], nums[i] + dp[i - 2]);
15+
}
16+
17+
return dp[nums.length - 1];
18+
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var longestConsecutive = function(nums) {
6+
if (nums.length === 0) return 0;
7+
8+
const numSet = new Set(nums);
9+
let maxLength = 0;
10+
11+
for (let num of numSet) {
12+
// 연속 수열의 시작점인지 확인
13+
if (!numSet.has(num - 1)) {
14+
let currentNum = num;
15+
let currentLength = 1;
16+
17+
// 연속된 숫자 있는 동안 증가
18+
while (numSet.has(currentNum + 1)) {
19+
currentNum += 1;
20+
currentLength += 1;
21+
}
22+
23+
maxLength = Math.max(maxLength, currentLength);
24+
}
25+
}
26+
27+
return maxLength;
28+
};

top-k-frequent-elements/krokerdile.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
var topKFrequent = function(nums, k) {
7+
let dict = new Map();
8+
let temp = Array.from(new Set([...nums]));
9+
for(const num of nums){
10+
if(dict.has(num)){
11+
dict.set(num, dict.get(num)+1);
12+
}else{
13+
dict.set(num,1);
14+
}
15+
}
16+
17+
temp = temp.sort((a,b)=>{
18+
let aCount = dict.get(a);
19+
let bCount = dict.get(b);
20+
21+
return bCount - aCount;
22+
})
23+
24+
let slice = temp.slice(0,k);
25+
return slice;
26+
};

two-sum/krokerdile.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+
* @param {number} target
4+
* @return {number[]}
5+
*/
6+
var twoSum = function(nums, target) {
7+
let dict = new Map();
8+
9+
for(const [index, num] of nums.entries()){
10+
if(dict.has(target-num) && dict.get(target-num) != index){
11+
return [dict.get(target-num),index];
12+
}
13+
dict.set(num, index);
14+
}
15+
};

0 commit comments

Comments
 (0)