๐ LeetCode Top 150 โ ์งํ ๋ก๊ทธ #1
Source: Dev.to
Progress
์ ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐโฏ&โฏ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ด๋ฅผ ๋ค์ง๊ธฐ ์ํด Topโฏ150 LeetCode ์ฌ์ ์ ๊ณต์์ ์ผ๋ก ์์ํ์ต๋๋ค.
Progress: 3โฏ/โฏ150 ๋ฌธ์ ํด๊ฒฐ.
๋ฌธ์ ๋ฅผ ์๋๋ฅด๊ธฐ๋ณด๋ค ํจํด์ ์ดํดํ๊ณ , ์ฌ๊ณ ๋ ฅ์ ํฅ์์ํค๋ฉฐ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ ๊น๋ํ ํ์ด๋ฅผ ์์ฑํ๋ ๋ฐ ์ง์คํ๊ณ ์์ต๋๋ค.
Approach: Merge Sorted Array (Pointerโbased merging)
Key Learning: ์ ๋ ฌ์๋ง ์์กดํ์ง ๋ง๊ณ ํฌ์ธํฐ ๊ธฐ๋ฐ ๋ณํฉ์ ์ฌ์ฉํ์ธ์.
class Solution {
public:
vector merge(vector& nums1, int m, vector& nums2, int n) {
// Copy nums2 into the tail of nums1
for (int i = m; i nums1[j + 1]) {
swap(nums1[j], nums1[j + 1]);
}
}
}
return nums1;
}
};
Approach: ์ํ์ง ์๋ ๊ฐ์ ์ ์๋ฆฌ์์ ๋ฎ์ด์ฐ๊ธฐ ์ํด ํฌ์ธํฐ(idx)๋ฅผ ์์ฑํฉ๋๋ค.
Approach: Remove Element
Key Learning: ์ ์งํด์ผ ํ ์์๋ค์ ๋ฎ์ด์ฐ๊ณ ์๋ก์ด ๊ธธ์ด๋ฅผ ๋ฐํํฉ๋๋ค.
class Solution {
public:
int removeElement(vector& nums, int val) {
int idx = 0;
for (int i = 0; i & nums) {
if (nums.empty()) return 0;
int idx = 1;
for (int i = 1; i < nums.size(); ++i) {
if (nums[i] != nums[i - 1]) {
nums[idx++] = nums[i];
}
}
return idx;
}
};
General Insights
์ด๊ธฐ DSA ๋ฌธ์ ๋ค์ ๋จ์ํด ๋ณด์ผ ์ ์์ง๋ง, ํ์์ ์ธ ์ต๊ด์ ๊ธฐ๋ฅด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค:
- ์ ์๋ฆฌ(inโplace) ์ฌ๊ณ
- ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ต์ํ
- ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํจํด ์ธ์
์ด ๋์ ์ ์๋์ ๊ดํ ๊ฒ์ด ์๋๋ผ, ๊พธ์คํ ํฅ์์ ๊ดํ ๊ฒ์ ๋๋ค.
Next Target
๐ Next Target: Topโฏ150 ๋ฌธ์ ๋ฅผ ๊ณ์ ์งํํฉ๋๋ค.
์ฌ๋ฌ๋ถ๋ DSA๋ฅผ ๊ณต๋ถํ๊ฑฐ๋ ๋ฌธ์ ํด๊ฒฐ ์ผ๊ด์ฑ์ ํค์ฐ๊ณ ์๋ค๋ฉด, ํจ๊ป ์ฑ์ฅํด์.
Connect
- GitHub: https://github.com/CodeWithDeeksh
- X (Twitter): https://x.com/deekshithax
ํ ๋ฒ์ ํ๋์ ๋ฌธ์ . ๊ฐ๋๋ณด๋ค ์ผ๊ด์ฑ์ ์ค์ํฉ๋๋ค.