Skip to content

Commit 6b69bb9

Browse files
authored
Merge pull request #1972 from JangAyeon/main
[JangAyeon] WEEK 01 solutions
2 parents d7025b8 + 5304e39 commit 6b69bb9

File tree

5 files changed

+107
-0
lines changed

5 files changed

+107
-0
lines changed

contains-duplicate/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 {boolean}
4+
*/
5+
6+
// 첫번째 제출
7+
var containsDuplicate = function (nums) {
8+
const counter = new Map();
9+
for (let e of nums) {
10+
const v = counter.has(e) ? counter.get(e) + 1 : 1;
11+
counter.set(e, v);
12+
}
13+
const answer = [...counter.values()].some((item) => item >= 2);
14+
return answer;
15+
};
16+
// 두번째 제출
17+
var containsDuplicate = function (nums) {
18+
return new Set(nums).size !== nums.length;
19+
};

house-robber/JangAyeon.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 rob = function (nums) {
6+
const N = nums.length;
7+
let answer = 0;
8+
let [rob1, rob2] = [0, 0];
9+
for (let num of nums) {
10+
let temp = Math.max(num + rob1, rob2);
11+
rob1 = rob2;
12+
rob2 = temp;
13+
}
14+
return rob2;
15+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var longestConsecutive = function (nums) {
6+
if (nums.length == 0) return 0;
7+
let answer = 0;
8+
let numsSet = new Set(nums);
9+
const N = nums.length;
10+
11+
for (let num of numsSet) {
12+
if (!numsSet.has(num - 1)) {
13+
let temp = num;
14+
let length = 1;
15+
16+
while (numsSet.has(temp + 1)) {
17+
length += 1;
18+
temp += 1;
19+
}
20+
// console.log(length)
21+
answer = Math.max(length, answer);
22+
}
23+
}
24+
25+
return answer;
26+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
var topKFrequent = function (nums, k) {
7+
nums = nums.sort((a, b) => a - b);
8+
const counter = new Map();
9+
for (let num of nums) {
10+
const value = counter.has(num) ? counter.get(num) + 1 : 1;
11+
counter.set(num, value);
12+
}
13+
const sorted = [...counter.entries()].sort((a, b) => b[1] - a[1]);
14+
const answer = sorted.slice(0, k).map((item) => item[0]);
15+
// console.log(counter, sorted, answer)
16+
17+
return answer;
18+
};

two-sum/JangAyeon.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number[]}
5+
*/
6+
7+
// 첫번째 통과 풀이 - 브루트포스
8+
var twoSum = function (nums, target) {
9+
for (let i = 0; i < nums.length; i++) {
10+
for (let j = i + 1; j < nums.length; j++) {
11+
if (nums[i] + nums[j] == target) {
12+
return [i, j];
13+
}
14+
}
15+
}
16+
};
17+
18+
// 두번째 통과 풀이 - 해시맵 + 효율성 고려
19+
var twoSum = function (nums, target) {
20+
const map = new Map(); // {값: 인덱스}
21+
22+
for (let i = 0; i < nums.length; i++) {
23+
const complement = target - nums[i]; // 필요한 짝 계산
24+
if (map.has(complement)) {
25+
return [map.get(complement), i]; // 이전에 complement가 있었으면 바로 반환
26+
}
27+
map.set(nums[i], i);
28+
}
29+
};

0 commit comments

Comments
 (0)