Skip to content

Commit e3f5ce0

Browse files
committed
Feat: #228, #248, #263, #279 solutions
1 parent 4bdfd65 commit e3f5ce0

File tree

4 files changed

+116
-0
lines changed

4 files changed

+116
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
4+
5+
// ๋๋‚˜๋Š” ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
6+
sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) { return a[1] < b[1]; });
7+
8+
int count = 1; // ์ฒซ ๊ตฌ๊ฐ„์€ ํ•ญ์ƒ ์„ ํƒ
9+
int end = intervals[0][1]; // ์ฒซ ๊ตฌ๊ฐ„์˜ ๋
10+
11+
for (int i = 1; i < intervals.size(); i++) {
12+
// ํ˜„์žฌ ๊ตฌ๊ฐ„์ด ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ์„ ํƒ
13+
if (intervals[i][0] >= end) {
14+
count++;
15+
end = intervals[i][1];
16+
}
17+
}
18+
19+
// ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๊ฐ„ ์ˆ˜ = ์ „์ฒด - ์„ ํƒ๋œ ๊ฐœ์ˆ˜
20+
return intervals.size() - count;
21+
}
22+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
3+
*/
4+
class Solution {
5+
public:
6+
int countComponents(int n, vector<vector<int>> &edges) {
7+
vector<vector<int>> graph(n);
8+
vector<bool> visited(n, false);
9+
10+
for (auto edge : edges) {
11+
int u = edge[0];
12+
int v = edge[1];
13+
graph[u].push_back(v);
14+
graph[v].push_back(u);
15+
}
16+
17+
int cnt = 0;
18+
for (int i = 0; i < n; i++) {
19+
if (!visited[i]) {
20+
dfs(i, graph, visited);
21+
cnt++;
22+
}
23+
}
24+
return cnt;
25+
}
26+
27+
void dfs(int node, vector<vector<int>> &graph, vector<bool> &visited) {
28+
visited[node] = true;
29+
for (int neighbor : graph[node]) {
30+
if (!visited[neighbor]) {
31+
dfs(neighbor, graph, visited);
32+
}
33+
}
34+
}
35+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ cnt๋ฅผ ์„ธ๊ณ , n๊ณผ cnt๋ฅผ ํ†ตํ•ด ์›€์ง์—ฌ์•ผ ํ•  ์œ„์น˜ mv๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค
3+
mv๊ฐ€ 0์ผ ๋•Œ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ head->next๋ฅผ ๋ฐ˜ํ™˜
4+
mv๊ฐ€ 0์ด ์•„๋‹ ๋•Œ๋Š” head๋ถ€ํ„ฐ mv๋งŒํผ ์ด๋™ํ•œ ํ›„, ๊ทธ ๋…ธ๋“œ์˜ ์ด์ „ ๋…ธ๋“œ(fh)์™€ ๋‹ค์Œ ๋…ธ๋“œ(tmp->next)๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค
5+
์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๊ณ  ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(1)์ด๋‹ค
6+
*/
7+
class Solution {
8+
public:
9+
ListNode* removeNthFromEnd(ListNode* head, int n) {
10+
11+
int cnt = 0;
12+
ListNode* end = head;
13+
while (end) {
14+
end = end->next;
15+
cnt++;
16+
}
17+
18+
int mv = cnt - n;
19+
if (mv == 0)
20+
return (head->next);
21+
ListNode* fh = nullptr;
22+
ListNode* tmp = head;
23+
for (int i = 0; i < mv; i++) {
24+
fh = tmp;
25+
tmp = tmp->next;
26+
}
27+
if (!fh)
28+
return (nullptr);
29+
if (tmp->next)
30+
fh->next = tmp->next;
31+
else
32+
fh->next = nullptr;
33+
return (head);
34+
}
35+
};

โ€Žsame-tree/crumbs22.cppโ€Ž

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
์ „์œ„์ˆœํšŒ ํ•˜๋ฉด์„œ ๋‘ ํŠธ๋ฆฌ๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต
3+
์žฌ๊ท€์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ
4+
๋‘ ํŠธ๋ฆฌ์˜ ์ž์‹๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†๋‹ค๋ฉด ํƒˆ์ถœํ•œ๋‹ค
5+
p->val == q->val ์กฐ๊ฑด์ด ์•„๋‹Œ p->val != q->val ์กฐ๊ฑด์„ ํŒ๋‹จํ•ด์•ผ
6+
p->val๊ณผ q->val์ด ๊ฐ™์„ ๋•Œ ๊ทธ ๋‹ค์Œ ์ž์‹๋…ธ๋“œ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” return๋ฌธ์œผ๋กœ ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค
7+
(p->val == q->val ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ฉด true๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ ์ค‘๊ฐ„์— ์ข…๊ฒฐ๋œ๋‹ค)
8+
์‹œ๊ฐ„๋ณต์žก๋„๋Š” ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๊ฐ™๋‹ค
9+
๋‹ค๋ฅธ ์ถ”๊ฐ€์  ๊ณต๊ฐ„์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(1)์ด๋‹ค
10+
*/
11+
class Solution {
12+
public:
13+
bool isSameTree(TreeNode* p, TreeNode* q) {
14+
15+
if (!p && !q)
16+
return (true);
17+
if (!p || !q)
18+
return (false);
19+
if (p->val != q->val)
20+
return (false);
21+
22+
return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right));
23+
}
24+
};

0 commit comments

Comments
ย (0)