Skip to content

Commit 3726ce4

Browse files
authored
Merge pull request #1138 from byol-han/main
[byol-han] WEEK 01 solutions
2 parents dfab7de + 6ce6d35 commit 3726ce4

File tree

5 files changed

+92
-0
lines changed

5 files changed

+92
-0
lines changed

contains-duplicate/byol-han.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
2+
/**
3+
* @param {number[]} nums
4+
* @return {boolean}
5+
*/
6+
var containsDuplicate = function (nums) {
7+
const uniqueSet = new Set(nums);
8+
return uniqueSet.size !== nums.length;
9+
};

house-robber/byol-han.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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 = [];
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], dp[i - 2] + nums[i]);
15+
}
16+
return dp[nums.length - 1];
17+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var longestConsecutive = function (nums) {
6+
if (nums.length === 0) return nums.length;
7+
8+
const setNums = new Set(nums);
9+
const sortNums = [...setNums].sort((a, b) => a - b);
10+
11+
let longest = 1;
12+
let currentlength = 1;
13+
14+
for (let i = 0; i < sortNums.length; i++) {
15+
if (sortNums[i] + 1 === sortNums[i + 1]) {
16+
currentlength++;
17+
longest = Math.max(longest, currentlength);
18+
} else {
19+
currentlength = 1;
20+
}
21+
}
22+
return longest;
23+
};

top-k-frequent-elements/byol-han.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
var topKFrequent = function (nums, k) {
7+
const freqMap = new Map();
8+
9+
// 빈도수 계산
10+
for (const num of nums) {
11+
freqMap.set(num, (freqMap.get(num) || 0) + 1);
12+
}
13+
14+
// Min Heap을 사용해서 상위 k개만 유지
15+
return Array.from(freqMap.entries()) // [ [num, count], [num, count], ... ]
16+
.sort((a, b) => b[1] - a[1]) // 빈도수를 기준으로 내림차순 정렬
17+
.slice(0, k) // 상위 k개 선택
18+
.map((entry) => entry[0]); // 숫자만 추출
19+
20+
return result;
21+
};

two-sum/byol-han.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
2+
3+
// You may assume that each input would have exactly one solution, and you may not use the same element twice.
4+
5+
// You can return the answer in any order.
6+
7+
/**
8+
* @param {number[]} nums
9+
* @param {number} target
10+
* @return {number[]}
11+
*/
12+
var twoSum = function (nums, target) {
13+
let result = [];
14+
for (let i = 0; i < nums.length; i++) {
15+
for (let j = i + 1; j < nums.length; j++) {
16+
if (nums[i] + nums[j] === target) {
17+
return [i, j];
18+
}
19+
}
20+
}
21+
return result;
22+
};

0 commit comments

Comments
 (0)