Skip to content

Commit 552db31

Browse files
authored
Merge pull request #583 from jaejeong1/main
[jaejeong1] Week 13 Solutions
2 parents d610260 + 5e4edb4 commit 552db31

File tree

4 files changed

+112
-0
lines changed

4 files changed

+112
-0
lines changed

โ€Žhouse-robber/jaejeong1.java

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public int rob(int[] nums) {
3+
// ์ธ์ ‘ํ•œ ๊ฒฝ์šฐ๋Š” ์ œ์™ธํ•œ ์ตœ๋Œ€ ํ•ฉ
4+
// ํ’€์ด: dp๋กœ ํ’€์ดํ•œ๋‹ค. dp[i] = max(dp[i-1], dp[i-2] + nums[i])
5+
// TC: O(N), SC: O(N)
6+
if (nums.length == 1) {
7+
return nums[0];
8+
}
9+
10+
var dp = new int[nums.length];
11+
dp[0] = nums[0];
12+
dp[1] = Math.max(nums[0], nums[1]);
13+
14+
for (int i=2; i<nums.length; i++) {
15+
dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i]);
16+
}
17+
18+
return dp[nums.length-1];
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
// Definition for a binary tree node.
3+
class TreeNode {
4+
int val;
5+
TreeNode left;
6+
TreeNode right;
7+
8+
TreeNode(int x) {
9+
val = x;
10+
}
11+
}
12+
13+
14+
class Solution {
15+
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
16+
// ํ”Œ์ด: p,q ๋‘˜๋‹ค root ๋ณด๋‹ค ๊ฐ’์ด ์ ์œผ๋ฉด ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ, ๋‘˜๋‹ค ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•œ๋‹ค.
17+
// ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น root๊ฐ€ ์ตœ์ € ๊ณตํ†ต ์กฐ์ƒ์ด ๋œ๋‹ค.
18+
// TC: O(H), H: ํŠธ๋ฆฌ์˜ ๋†’์ด
19+
// SC: O(1)
20+
var node = root;
21+
while (node != null) {
22+
if (p.val < node.val && q.val < node.val) {
23+
node = node.left;
24+
} else if (p.val > node.val && q.val > node.val) {
25+
node = node.right;
26+
} else {
27+
break;
28+
}
29+
}
30+
31+
return node;
32+
}
33+
}

โ€Žmeeting-rooms/jaejeong1.java

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import java.util.List;
2+
3+
// Definition of Interval:
4+
class Interval {
5+
int start, end;
6+
Interval(int start, int end) {
7+
this.start = start;
8+
this.end = end;
9+
}
10+
}
11+
12+
13+
public class Solution {
14+
/**
15+
* @param intervals: an array of meeting time intervals
16+
* @return: if a person could attend all meetings
17+
*/
18+
public boolean canAttendMeetings(List<Interval> intervals) {
19+
// ํ’€์ด: ์ •๋ ฌ ํ›„ ์–‘์˜†์„ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š์œผ๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
20+
// TC: O(N)
21+
// SC: O(1)
22+
23+
var sortedIntervals = intervals.stream().sorted().toList();
24+
25+
for (int i=0; i<sortedIntervals.size()-1; i++) {
26+
if (sortedIntervals.get(i).end > sortedIntervals.get(i+1).start) {
27+
return false;
28+
}
29+
}
30+
return true;
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import java.util.Arrays;
2+
import java.util.Comparator;
3+
4+
class Solution {
5+
public int eraseOverlapIntervals(int[][] intervals) {
6+
// ํ’€์ด: ์ •๋ ฌ ํ›„ ๊ฐ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’์„ ์ €์žฅํ•ด๊ฐ€๋ฉฐ ์–‘ ์˜†์„ ๋น„๊ต, ์ œ๊ฑฐ ๋Œ€์ƒ์ผ๋•Œ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
7+
// TC: O(N)
8+
// SC: O(1)
9+
10+
// intervals๋ฅผ ๊ฐ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
11+
Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));
12+
13+
int answer = 0;
14+
int end = intervals[0][1]; // ์ฒซ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’
15+
16+
// ๋‘ ๋ฒˆ์งธ ๊ตฌ๊ฐ„๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉฐ ๊ฒน์น˜๋Š”์ง€ ํ™•์ธ
17+
for (int i = 1; i < intervals.length; i++) {
18+
if (intervals[i][0] < end) { // ํ˜„์žฌ ๊ตฌ๊ฐ„์ด ์ด์ „ ๊ตฌ๊ฐ„๊ณผ ๊ฒน์น˜๋ฉด
19+
answer++; // ์ œ๊ฑฐ ํšŸ์ˆ˜๋ฅผ ์ฆ๊ฐ€
20+
} else {
21+
end = intervals[i][1]; // ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’์„ ๊ฐฑ์‹ 
22+
}
23+
}
24+
25+
return answer;
26+
}
27+
}

0 commit comments

Comments
ย (0)