Skip to content

Commit 6515a1e

Browse files
committed
8주차 문제 풀이 5개 추가
1 parent 2161c19 commit 6515a1e

5 files changed

Lines changed: 150 additions & 0 deletions

File tree

clone-graph/hwi-middle.cpp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
// Definition for a Node.
3+
class Node {
4+
public:
5+
int val;
6+
vector<Node*> neighbors;
7+
Node() {
8+
val = 0;
9+
neighbors = vector<Node*>();
10+
}
11+
Node(int _val) {
12+
val = _val;
13+
neighbors = vector<Node*>();
14+
}
15+
Node(int _val, vector<Node*> _neighbors) {
16+
val = _val;
17+
neighbors = _neighbors;
18+
}
19+
};
20+
*/
21+
22+
class Solution {
23+
public:
24+
Node* cloneGraph(Node* node) {
25+
if (node == nullptr)
26+
{
27+
return node;
28+
}
29+
30+
if (nodeMap.contains(node))
31+
{
32+
return nodeMap[node];
33+
}
34+
35+
Node* copied = new Node(node->val);
36+
nodeMap[node] = copied;
37+
for (auto n : node->neighbors)
38+
{
39+
copied->neighbors.push_back(cloneGraph(n));
40+
}
41+
42+
return copied;
43+
}
44+
45+
private:
46+
unordered_map<Node*, Node*> nodeMap;
47+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public:
3+
int longestCommonSubsequence(string text1, string text2) {
4+
vector<int> d(text1.length(), 0);
5+
int ans = 0;
6+
7+
for (auto c : text2)
8+
{
9+
int cur = 0;
10+
for (int i = 0; i < d.size(); i++)
11+
{
12+
if (cur < d[i])
13+
{
14+
cur = d[i];
15+
}
16+
else if (c == text1[i])
17+
{
18+
d[i] = cur + 1;
19+
ans = max(ans, cur + 1);
20+
}
21+
}
22+
}
23+
24+
return ans;
25+
}
26+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public:
3+
int characterReplacement(string s, int k) {
4+
unordered_map<char, int> freq;
5+
int res = 0;
6+
int i = 0;
7+
int maxFreq = 0;
8+
9+
for (int j = 0; j < s.size(); j++)
10+
{
11+
freq[s[j]]++;
12+
maxFreq = max(maxFreq, freq[s[j]]);
13+
14+
while ((j - i + 1) - maxFreq > k)
15+
{
16+
freq[s[i]]--;
17+
i++;
18+
}
19+
20+
res = max(res, j - i + 1);
21+
}
22+
23+
return res;
24+
}
25+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
public:
3+
int countSubstrings(string s) {
4+
int n = s.size();
5+
if (n == 0)
6+
{
7+
return 0;
8+
}
9+
10+
vector<vector<int>> dp(n, vector<int>(n));
11+
12+
int ans = n;
13+
for (int i = 0; i < n; ++i)
14+
{
15+
dp[i][i] = true;
16+
}
17+
18+
for (int i = 0; i < n - 1; ++i)
19+
{
20+
dp[i][i + 1] = (s[i] == s[i + 1]);
21+
ans += dp[i][i + 1];
22+
}
23+
24+
for (int l = 3; l <= n; ++l)
25+
{
26+
for (int i = 0, j = i + l - 1; j < n; ++i, ++j)
27+
{
28+
dp[i][j] = dp[i + 1][j - 1] && (s[i] == s[j]);
29+
ans += dp[i][j];
30+
}
31+
}
32+
33+
return ans;
34+
}
35+
};

reverse-bits/hwi-middle.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public:
3+
int reverseBits(int n) {
4+
int r = 0;
5+
6+
for (int i = 0; i <= 31; ++i)
7+
{
8+
int pot = 1 << i;
9+
if ((n & pot) != 0)
10+
{
11+
r |= (1 << (31 - i));
12+
}
13+
}
14+
15+
return r;
16+
}
17+
};

0 commit comments

Comments
 (0)