Skip to content

Commit 9ce8782

Browse files
authored
Merge pull request #655 from y00eunji/main
[DoDo] Week 1
2 parents ec30686 + 23502e0 commit 9ce8782

File tree

5 files changed

+89
-0
lines changed

5 files changed

+89
-0
lines changed

โ€Žcontains-duplicate/y00eunji.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {boolean}
4+
*/
5+
var containsDuplicate = function(nums) {
6+
// set์— ๋„ฃ์–ด ์ค‘๋ณต์„ ์ค„์ด๊ณ  ๊ธธ์ด๋ฅผ ๋น„๊ตํ•œ๋‹ค.
7+
8+
return new Set(nums).size !== nums.length;
9+
};

โ€Žhouse-robber/y00eunji.js

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 rob = function(nums) {
6+
const len = nums.length;
7+
if (len === 0) return 0;
8+
if (len === 1) return nums[0];
9+
if (len === 2) return Math.max(nums[0], nums[1]);
10+
11+
const dp = Array(len).fill(0);
12+
dp[0] = nums[0];
13+
dp[1] = Math.max(nums[0], nums[1]);
14+
15+
// ํ˜„์žฌ ์ง‘์„ ํ„ฐ๋Š” ๊ฒฝ์šฐ์™€ ์•ˆ ํ„ฐ๋Š” ๊ฒฝ์šฐ ์ค‘ ์ตœ๋Œ€๊ฐ’ ์„ ํƒ
16+
// 1. ์ด์ „ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก (ํ˜„์žฌ ์ง‘ ์Šคํ‚ต)
17+
// 2. ์ „์ „ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก + ํ˜„์žฌ ์ง‘ ๊ธˆ์•ก (ํ˜„์žฌ ์ง‘ ์„ ํƒ)
18+
for (let i = 2; i < len; i++) {
19+
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
20+
}
21+
22+
return dp[len - 1];
23+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var longestConsecutive = function(nums) {
6+
const numSet = new Set(nums);
7+
let longestStreak = 0;
8+
9+
for (const num of numSet) {
10+
// ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ์—ฐ์† ์‹œํ€€์Šค์˜ ์‹œ์ž‘์ ์ธ์ง€ ํ™•์ธ
11+
// ์ฆ‰, num-1์ด set์— ์—†์–ด์•ผ ํ•จ
12+
if (!numSet.has(num - 1)) {
13+
let currentNum = num;
14+
let currentStreak = 1;
15+
16+
// ํ˜„์žฌ ์ˆซ์ž์˜ ์—ฐ์†๋œ ๋‹ค์Œ ์ˆซ์ž๋“ค์„ ์ฐพ์Œ
17+
while (numSet.has(currentNum + 1)) {
18+
currentNum += 1;
19+
currentStreak += 1;
20+
}
21+
22+
longestStreak = Math.max(longestStreak, currentStreak);
23+
}
24+
}
25+
26+
return longestStreak;
27+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
var topKFrequent = function(nums, k) {
7+
// 1. nums ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜์—ฌ ๊ฐ ์ˆซ์ž์˜ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  obj ๊ฐ์ฒด์— ์ €์žฅ
8+
const obj = nums.reduce((acc, cur) => {
9+
acc[cur] = (acc[cur] || 0) + 1;
10+
return acc;
11+
}, {});
12+
13+
// 2. obj ๊ฐ์ฒด์˜ ํ‚ค-๊ฐ’ ์Œ์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, k๊ฐœ ์ถ”์ถœ
14+
const frequentArr = Object.entries(obj)
15+
.sort(([, valueA], [, valueB]) => valueB - valueA)
16+
.slice(0, k)
17+
.map(([key]) => +key);
18+
19+
return frequentArr;
20+
};

โ€Žvalid-palindrome/y00eunji.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isPalindrome = function(s) {
6+
const filtered = s.toLowerCase().replace(/[^a-zA-Z0-9]/g, '');
7+
const reversed = filtered.split('').reverse().join('');
8+
9+
return filtered === reversed;
10+
};

0 commit comments

Comments
ย (0)