Skip to content

Commit dcb6bb6

Browse files
authored
Merge pull request DaleStudy#676 from HiGeuni/main
2 parents df8b9f5 + 2db6f2c commit dcb6bb6

5 files changed

Lines changed: 136 additions & 0 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// ํ’€์ด
2+
// Set์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ ํ›„ nums์™€ ๊ธธ์ด ๋น„๊ต
3+
4+
// TC : O(N)
5+
// SC : O(N)
6+
7+
var containsDuplicate = function(nums) {
8+
return new Set(nums).size !== nums.length
9+
};
10+

โ€Žhouse-robber/higeuni.jsโ€Ž

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// ํ’€์ด
2+
// dp๋ฅผ ์ด์šฉํ•œ ํ’€์ด
3+
// ์ ํ™”์‹ : dp[index] = Math.max(dp[index-1], dp[index-2] + nums[index])
4+
// ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๊ฐ€ index-1, index-2 ๋ฟ์ด๋ผ ๋ถˆํ•„์š”ํ•œ ๋ฐฐ์—ด์„ ์ œ๊ฑฐํ•˜๊ณ ์ž ํ•จ.
5+
6+
// TC : O(N)
7+
// SC : O(1)
8+
9+
var rob = function(nums) {
10+
let dp = new Array(2);
11+
12+
dp[0] = nums[0]
13+
// nums์˜ ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
14+
dp[1] = nums.length > 1 ? Math.max(nums[0], nums[1]) : nums[0]
15+
16+
nums.forEach((num, index) => {
17+
if(index <= 1) return;
18+
19+
let temp = Math.max(dp[1], dp[0] + nums[index])
20+
dp[0] = dp[1]
21+
dp[1] = temp
22+
})
23+
24+
return dp[1]
25+
};
26+
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// ์ •๋ ฌ์„ ์ด์šฉํ•œ ํ’€์ด
2+
// TC : O(NlogN)
3+
// SC : O(N)
4+
5+
var longestConsecutiveUsingSort = function (nums) {
6+
if (nums.length === 0) return 0;
7+
8+
const uniqueNums = [...new Set(nums)].sort((a, b) => a - b);
9+
10+
let max_cnt = 0;
11+
let cnt = 1;
12+
for (let i = 1; i < uniqueNums.length; ++i) {
13+
if (uniqueNums[i - 1] + 1 == uniqueNums[i]) {
14+
cnt += 1;
15+
} else {
16+
max_cnt = cnt > max_cnt ? cnt : max_cnt;
17+
cnt = 1;
18+
}
19+
}
20+
max_cnt = cnt > max_cnt ? cnt : max_cnt;
21+
return max_cnt;
22+
};
23+
24+
// ์ง‘ํ•ฉ์„ ์ด์šฉํ•œ ํ’€์ด
25+
// TC : O(N)
26+
// SC : O(N)
27+
28+
var longestConsecutive = function (nums) {
29+
if (nums.length === 0) return 0;
30+
31+
const numSet = new Set(nums);
32+
let maxLength = 0;
33+
34+
for (const num of numSet) {
35+
if (!numSet.has(num - 1)) {
36+
let currentNum = num;
37+
let currentLength = 1;
38+
39+
while (numSet.has(currentNum + 1)) {
40+
currentNum++;
41+
currentLength++;
42+
}
43+
44+
maxLength = Math.max(maxLength, currentLength);
45+
}
46+
}
47+
48+
return maxLength;
49+
};
50+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// ํ’€์ด
2+
// 1. ๊ฐ ์š”์†Œ์˜ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ countObject ์ƒ์„ฑ
3+
// 2. countObject๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ƒ์œ„ k๊ฐœ์˜ ์š”์†Œ ์ถ”์ถœ
4+
// 3. ์ถ”์ถœ๋œ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
5+
6+
// TC : O(NlogN)
7+
// SC : O(N)
8+
9+
var topKFrequent = function(nums, k) {
10+
const countObject = {}
11+
nums.forEach((num) => {
12+
if(countObject[num]) {
13+
countObject[num] += 1
14+
}else {
15+
countObject[num] = 1
16+
}
17+
})
18+
19+
const sortedObject = Object.entries(countObject)
20+
.sort((a,b) => b[1] - a[1])
21+
.slice(0, k)
22+
.map(item => Number(item[0]))
23+
24+
return sortedObject
25+
};
26+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// ํ’€์ด
2+
// 1. ์˜์–ด, ์ˆซ์ž๋งŒ ๋‚จ๊ธฐ๊ณ  ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ newStr ์ƒ์„ฑ
3+
// 2. ํˆฌํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ž์—ด ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€ ํ™•์ธ (์ดˆ๊ธฐ๊ฐ’ : true)
4+
// 3. ์ค‘๊ฐ„์— ํŒฐ๋ฆฐ๋“œ๋กฌ์ด ์•„๋‹Œ ์ง€์ ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด flag๋ฅผ false๋กœ ๋ณ€๊ฒฝ ํ›„ return
5+
6+
// TC : O(N)
7+
// SC : O(N)
8+
9+
var isPalindrome = function(s) {
10+
const newStr = s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
11+
let flag = true
12+
let left = 0, right = newStr.length - 1
13+
while(left < right){
14+
if(newStr[left] === newStr[right]) {
15+
left += 1;
16+
right -= 1;
17+
}else {
18+
flag = false;
19+
break;
20+
}
21+
}
22+
return flag
23+
};
24+

0 commit comments

Comments
ย (0)