Skip to content

Commit

Permalink
Merge pull request #583 from jaejeong1/main
Browse files Browse the repository at this point in the history
[jaejeong1] Week 13 Solutions
  • Loading branch information
jaejeong1 authored Nov 10, 2024
2 parents d610260 + 5e4edb4 commit 552db31
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 0 deletions.
20 changes: 20 additions & 0 deletions house-robber/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class Solution {
public int rob(int[] nums) {
// ์ธ์ ‘ํ•œ ๊ฒฝ์šฐ๋Š” ์ œ์™ธํ•œ ์ตœ๋Œ€ ํ•ฉ
// ํ’€์ด: dp๋กœ ํ’€์ดํ•œ๋‹ค. dp[i] = max(dp[i-1], dp[i-2] + nums[i])
// TC: O(N), SC: O(N)
if (nums.length == 1) {
return nums[0];
}

var dp = new int[nums.length];
dp[0] = nums[0];
dp[1] = Math.max(nums[0], nums[1]);

for (int i=2; i<nums.length; i++) {
dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i]);
}

return dp[nums.length-1];
}
}
33 changes: 33 additions & 0 deletions lowest-common-ancestor-of-a-binary-search-tree/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

// Definition for a binary tree node.
class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode(int x) {
val = x;
}
}


class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
// ํ”Œ์ด: p,q ๋‘˜๋‹ค root ๋ณด๋‹ค ๊ฐ’์ด ์ ์œผ๋ฉด ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ, ๋‘˜๋‹ค ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•œ๋‹ค.
// ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น root๊ฐ€ ์ตœ์ € ๊ณตํ†ต ์กฐ์ƒ์ด ๋œ๋‹ค.
// TC: O(H), H: ํŠธ๋ฆฌ์˜ ๋†’์ด
// SC: O(1)
var node = root;
while (node != null) {
if (p.val < node.val && q.val < node.val) {
node = node.left;
} else if (p.val > node.val && q.val > node.val) {
node = node.right;
} else {
break;
}
}

return node;
}
}
32 changes: 32 additions & 0 deletions meeting-rooms/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import java.util.List;

// Definition of Interval:
class Interval {
int start, end;
Interval(int start, int end) {
this.start = start;
this.end = end;
}
}


public class Solution {
/**
* @param intervals: an array of meeting time intervals
* @return: if a person could attend all meetings
*/
public boolean canAttendMeetings(List<Interval> intervals) {
// ํ’€์ด: ์ •๋ ฌ ํ›„ ์–‘์˜†์„ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š์œผ๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// TC: O(N)
// SC: O(1)

var sortedIntervals = intervals.stream().sorted().toList();

for (int i=0; i<sortedIntervals.size()-1; i++) {
if (sortedIntervals.get(i).end > sortedIntervals.get(i+1).start) {
return false;
}
}
return true;
}
}
27 changes: 27 additions & 0 deletions non-overlapping-intervals/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import java.util.Arrays;
import java.util.Comparator;

class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
// ํ’€์ด: ์ •๋ ฌ ํ›„ ๊ฐ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’์„ ์ €์žฅํ•ด๊ฐ€๋ฉฐ ์–‘ ์˜†์„ ๋น„๊ต, ์ œ๊ฑฐ ๋Œ€์ƒ์ผ๋•Œ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// TC: O(N)
// SC: O(1)

// intervals๋ฅผ ๊ฐ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));

int answer = 0;
int end = intervals[0][1]; // ์ฒซ ๋ฒˆ์งธ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’

// ๋‘ ๋ฒˆ์งธ ๊ตฌ๊ฐ„๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉฐ ๊ฒน์น˜๋Š”์ง€ ํ™•์ธ
for (int i = 1; i < intervals.length; i++) {
if (intervals[i][0] < end) { // ํ˜„์žฌ ๊ตฌ๊ฐ„์ด ์ด์ „ ๊ตฌ๊ฐ„๊ณผ ๊ฒน์น˜๋ฉด
answer++; // ์ œ๊ฑฐ ํšŸ์ˆ˜๋ฅผ ์ฆ๊ฐ€
} else {
end = intervals[i][1]; // ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ๊ตฌ๊ฐ„์˜ ๋ ๊ฐ’์„ ๊ฐฑ์‹ 
}
}

return answer;
}
}

0 comments on commit 552db31

Please sign in to comment.