Skip to content

Commit 6d375f5

Browse files
authored
Merge pull request #1552 from clara-shin/main
[clara-shin] Week 10 Solutions
2 parents ff7b0b5 + c190be4 commit 6d375f5

File tree

5 files changed

+187
-0
lines changed

5 files changed

+187
-0
lines changed

โ€Žcourse-schedule/clara-shin.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* @param {number} numCourses
3+
* @param {number[][]} prerequisites
4+
* @return {boolean}
5+
*/
6+
var canFinish = function (numCourses, prerequisites) {
7+
// 1. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์™€ ์ง„์ž… ์ฐจ์ˆ˜ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
8+
const graph = new Array(numCourses).fill(null).map(() => []);
9+
const inDegree = new Array(numCourses).fill(0);
10+
11+
// 2. ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ ๋ฐ ์ง„์ž… ์ฐจ์ˆ˜ ๊ณ„์‚ฐ
12+
for (const [course, prereq] of prerequisites) {
13+
graph[prereq].push(course);
14+
inDegree[course]++; // course์˜ ์ง„์ž… ์ฐจ์ˆ˜ ์ฆ๊ฐ€
15+
}
16+
17+
// 3. ์ง„์ž… ์ฐจ์ˆ˜๊ฐ€ 0์ธ ๋…ธ๋“œ๋“ค์„ ํ์— ์ถ”๊ฐ€
18+
const queue = [];
19+
for (let i = 0; i < numCourses; i++) {
20+
if (inDegree[i] === 0) {
21+
queue.push(i);
22+
}
23+
}
24+
25+
// 4. ์œ„์ƒ ์ •๋ ฌ ์ˆ˜ํ–‰
26+
let processedCourses = 0;
27+
28+
while (queue.length > 0) {
29+
const current = queue.shift();
30+
processedCourses++;
31+
32+
// ํ˜„์žฌ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ง„์ž… ์ฐจ์ˆ˜ ๊ฐ์†Œ
33+
for (const neighbor of graph[current]) {
34+
inDegree[neighbor]--;
35+
36+
// ์ง„์ž… ์ฐจ์ˆ˜๊ฐ€ 0์ด ๋˜๋ฉด ํ์— ์ถ”๊ฐ€
37+
if (inDegree[neighbor] === 0) {
38+
queue.push(neighbor);
39+
}
40+
}
41+
}
42+
43+
// 5. ๋ชจ๋“  ๊ฐ•์˜๋ฅผ ์ฒ˜๋ฆฌํ–ˆ๋Š”์ง€ ํ™•์ธ
44+
return processedCourses === numCourses;
45+
};

โ€Žinvert-binary-tree/clara-shin.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {TreeNode}
12+
*/
13+
var invertTree = function (root) {
14+
if (!root) return null;
15+
16+
const queue = [root];
17+
18+
while (queue.length > 0) {
19+
const current = queue.shift();
20+
21+
// ์ž์‹ ๋…ธ๋“œ๋“ค ๋ฐ”๊พธ๊ธฐ
22+
[current.left, current.right] = [current.right, current.left];
23+
24+
// ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํ์— ์ถ”๊ฐ€
25+
if (current.left) queue.push(current.left);
26+
if (current.right) queue.push(current.right);
27+
}
28+
29+
return root;
30+
};

โ€Žjump-game/clara-shin.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+
var canJump = function (nums) {
6+
let farthest = 0;
7+
8+
for (let i = 0; i < nums.length; i++) {
9+
// ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋จผ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ๋ฉ€๋‹ค๋ฉด
10+
if (i > farthest) {
11+
return false; // ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ
12+
}
13+
14+
// ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋จผ ๊ฑฐ๋ฆฌ ์—…๋ฐ์ดํŠธ
15+
farthest = Math.max(farthest, i + nums[i]);
16+
}
17+
18+
return true;
19+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode[]} lists
10+
* @return {ListNode}
11+
*/
12+
// ์ตœ์ ํ™”๋œ K๊ฐœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋ณ‘ํ•ฉ - ์žฌ๊ท€ ๋ถ„ํ•  ์ •๋ณต
13+
var mergeKLists = function (lists) {
14+
if (!lists || lists.length === 0) return null;
15+
if (lists.length === 1) return lists[0];
16+
17+
return mergeListsRange(lists, 0, lists.length - 1);
18+
};
19+
20+
// ๋ฒ”์œ„ ๋‚ด์˜ ๋ฆฌ์ŠคํŠธ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ๋ณ‘ํ•ฉ
21+
function mergeListsRange(lists, start, end) {
22+
// ๊ธฐ์ € ์กฐ๊ฑด: ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋งŒ ๋‚จ์€ ๊ฒฝ์šฐ
23+
if (start === end) {
24+
return lists[start];
25+
}
26+
27+
// ๋‘ ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋งŒ ๋‚จ์€ ๊ฒฝ์šฐ
28+
if (start + 1 === end) {
29+
return mergeTwoLists(lists[start], lists[end]);
30+
}
31+
32+
// ์ค‘๊ฐ„์ ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 
33+
let mid = Math.floor((start + end) / 2);
34+
let left = mergeListsRange(lists, start, mid);
35+
let right = mergeListsRange(lists, mid + 1, end);
36+
37+
return mergeTwoLists(left, right);
38+
}
39+
40+
// ๋‘ ๊ฐœ์˜ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณ‘ํ•ฉ (์ตœ์ ํ™”)
41+
function mergeTwoLists(l1, l2) {
42+
// null ์ฒดํฌ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ ๋ฐฉ์ง€
43+
if (!l1) return l2;
44+
if (!l2) return l1;
45+
46+
// ๋” ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง„ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์žฌ๊ท€ ํ˜ธ์ถœ
47+
if (l1.val <= l2.val) {
48+
l1.next = mergeTwoLists(l1.next, l2);
49+
return l1;
50+
} else {
51+
l2.next = mergeTwoLists(l1, l2.next);
52+
return l2;
53+
}
54+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number}
5+
*/
6+
var search = function (nums, target) {
7+
let left = 0;
8+
let right = nums.length - 1;
9+
10+
while (left <= right) {
11+
const mid = Math.floor((left + right) / 2);
12+
13+
// ํƒ€๊ฒŸ์„ ์ฐพ์•˜๋‹ค๋ฉด ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
14+
if (nums[mid] === target) {
15+
return mid;
16+
}
17+
18+
// ์™ผ์ชฝ ์ ˆ๋ฐ˜์ด ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
19+
if (nums[left] <= nums[mid]) {
20+
// ํƒ€๊ฒŸ์ด ์™ผ์ชฝ ์ •๋ ฌ๋œ ๋ฒ”์œ„์— ์žˆ๋Š”์ง€ ํ™•์ธ
21+
if (nums[left] <= target && target < nums[mid]) {
22+
right = mid - 1; // ์™ผ์ชฝ์œผ๋กœ ์ด๋™
23+
} else {
24+
left = mid + 1; // ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
25+
}
26+
}
27+
// ์˜ค๋ฅธ์ชฝ ์ ˆ๋ฐ˜์ด ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
28+
else {
29+
// ํƒ€๊ฒŸ์ด ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ๋œ ๋ฒ”์œ„์— ์žˆ๋Š”์ง€ ํ™•์ธ
30+
if (nums[mid] < target && target <= nums[right]) {
31+
left = mid + 1; // ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
32+
} else {
33+
right = mid - 1; // ์™ผ์ชฝ์œผ๋กœ ์ด๋™
34+
}
35+
}
36+
}
37+
38+
return -1; // ํƒ€๊ฒŸ์„ ์ฐพ์ง€ ๋ชปํ•จ
39+
};

0 commit comments

Comments
ย (0)