Skip to content

Commit 2517417

Browse files
authored
Merge pull request #641 from hanseulhee/main
[hanseulhyi] - Week 1
2 parents b82b4eb + dff59b1 commit 2517417

File tree

5 files changed

+119
-0
lines changed

5 files changed

+119
-0
lines changed

โ€Žcontains-duplicate/hanseulhee.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {boolean}
4+
*
5+
* ์ ‘๊ทผ: ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์ค‘๋ณต์ด ์žˆ์œผ๋ฉด true ๋ฐ˜ํ™˜, ์ค‘๋ณต์ด ์—†์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
6+
* ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋‘ ๋ฒˆ ๋Œ๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค๊ณ„ํ•˜๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
7+
*
8+
* ํ•ด๊ฒฐ: ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” Set์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
9+
* Set์— ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ๋‹ค๋ฉด true๋ฅผ ์—†๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
10+
*/
11+
12+
var containsDuplicate = function(nums) {
13+
const duplicate = new Set();
14+
15+
for (let i = 0; i < nums.length; i++) {
16+
if (duplicate.has(nums[i])) {
17+
return true;
18+
}
19+
duplicate.add(nums[i]);
20+
}
21+
22+
return false;
23+
};

โ€Žhouse-robber/hanseulhee.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
6+
var rob = function (nums) {
7+
// ์ง‘์ด ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ
8+
if (nums.length === 1) return nums[0]
9+
10+
let prevMax = 0 // ๋‘ ์ง‘ ์ „๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก
11+
let currMax = 0 // ์ด์ „ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก
12+
13+
for (let num of nums) {
14+
let temp = currMax // ํ˜„์žฌ ์ตœ๋Œ€ ๊ธˆ์•ก
15+
currMax = Math.max(currMax, prevMax + num) // ํ˜„์žฌ ์ง‘์„ ํ„ธ๊ฑฐ๋‚˜ ํ„ธ์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ค‘ ํฐ ๊ฐ’
16+
prevMax = temp // ์ด์ „ ์ง‘์œผ๋กœ ์ด๋™
17+
}
18+
19+
return currMax // ์ตœ๋Œ€ ๊ธˆ์•ก ๋ฐ˜ํ™˜
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
6+
var longestConsecutive = function (nums) {
7+
// Set์œผ๋กœ ๋ฐฐ์—ด์—์„œ ์ค‘๋ณต๋œ ์š”์†Œ ์ œ๊ฑฐ
8+
const numSet = new Set(nums)
9+
10+
// ์ตœ์žฅ ๊ธธ์ด
11+
let longest = 0
12+
13+
// ๋ฐฐ์—ด์„ ๋Œ๋ฉฐ ์ฒซ ์‹œ์ž‘์ด ๋˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์Œ
14+
for (const num of numSet) {
15+
// ์—ฐ์†๋œ ์ˆซ์ž์˜ ์‹œ์ž‘์€ num - 1์ด Set์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ˆซ์ž์—ฌ์•ผ ํ•จ
16+
if (!numSet.has(num - 1)) {
17+
let currentNum = num
18+
let currentStreak = 1
19+
20+
while (numSet.has(currentNum + 1)) {
21+
currentNum += 1 // ๋‹ค์Œ ์ˆซ์ž๋กœ ์ด๋™
22+
currentStreak += 1 // ์—ฐ์†๋œ ๊ธธ์ด ์ฆ๊ฐ€
23+
}
24+
25+
longest = Math.max(longest, currentStreak)
26+
}
27+
}
28+
29+
return longest
30+
}
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number[]}
5+
*/
6+
7+
function topKFrequent(nums, k) {
8+
// ์ˆซ์ž์˜ ๋นˆ๋„๋ฅผ ์ €์žฅํ•  Map ์ƒ์„ฑ
9+
const frequency = new Map();
10+
11+
// ๋นˆ๋„ ๊ณ„์‚ฐ
12+
for (const num of nums) {
13+
// Map์— ์ด๋ฏธ ์ˆซ์ž๊ฐ€ ์žˆ์œผ๋ฉด +1, ์—†์œผ๋ฉด 1๋กœ reset
14+
frequency.set(num, (frequency.get(num) || 0) + 1);
15+
}
16+
17+
// ๋นˆ๋„ ์ˆœ์œผ๋กœ ์ˆซ์ž ์ •๋ ฌ ํ›„ ๊ฐ€์žฅ ๋นˆ๋„๊ฐ€ ๋†’์€ k๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜
18+
return [...frequency.entries()] // entries๋ฅผ ์ด์šฉํ•ด Map์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
19+
.sort((a, b) => b[1] - a[1])
20+
.slice(0, k)
21+
.map(entry => entry[0]);
22+
}

โ€Žvalid-palindrome/hanseulhee.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*
5+
* ํ•ด๊ฒฐ: ๋จผ์ € ๋ฌธ์ž์—ด์˜ ์ •๋ฐฉํ–ฅ, ์—ญ๋ฐฉํ–ฅ ๋น„๊ต๋ฅผ ์œ„ํ•ด ๋ฌธ์ž์—ด์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์˜€์œผ๋ฉฐ ํŠน์ˆ˜๊ธฐํ˜ธ๋Š” ์ œ์™ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.
6+
* ์ •๋ฐฉํ–ฅ๊ณผ ์—ญ๋ฐฉํ–ฅ์„ ๋น„๊ตํ•˜์—ฌ ๋ฌธ์ž๊ฐ€ ๋ชจ๋‘ ์ผ์น˜ํ•˜๋ฉด true ์•„๋‹ˆ๋ผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
7+
*/
8+
var isPalindrome = function (s) {
9+
const filterS = s.toLowerCase().replace(/[^a-z0-9]/g, "");
10+
11+
let left = 0;
12+
let right = filterS.length - 1;
13+
14+
while (left < right) {
15+
if (filterS[left] !== filterS[right]) {
16+
return false;
17+
} else {
18+
left++;
19+
right--;
20+
}
21+
}
22+
23+
return true;
24+
};

0 commit comments

Comments
ย (0)