diff --git a/Kaifeel/README.md b/Kaifeel/README.md
index d1ab9d6..4e79f30 100644
--- a/Kaifeel/README.md
+++ b/Kaifeel/README.md
@@ -7,3 +7,5 @@
| 5차시 | 2026.07.01 | 최소 편집 | #32|
| 6차시 | 2026.07.07 | 트로미노 | #35|
| 7차시 | 2026.07.13 | 다리만들기 2 | #36|
+| 8차시 | 2026.08.10| Maximal Rectangle | #37|
+| 9차시 | 2026.08.16| Cookies and Greedy Takahashi | #39|
diff --git "a/Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp" "b/Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp"
new file mode 100644
index 0000000..fec4eab
--- /dev/null
+++ "b/Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp"
@@ -0,0 +1,60 @@
+#include
+#include
+#include
+#include
+
+using namespace std;
+typedef long long ll;
+
+int main()
+{
+ int n;
+ cin >> n;
+ vector plus;
+
+ vector minus;
+
+ while (n--)
+ {
+ ll num;
+ cin >> num;
+ if (num > 0)
+ plus.push_back(num);
+ else
+ minus.push_back(num);
+ }
+
+ sort(plus.begin(), plus.end());
+ sort(minus.rbegin(), minus.rend());
+
+ int i = 0, j = 0;
+ ll ans = 0;
+ ll cur = 0;
+
+ while (i != minus.size() || j != plus.size())
+ {
+
+ ll leftD = LLONG_MAX;
+ ll rightD = LLONG_MAX;
+
+ if (i < minus.size())
+ leftD = abs(minus[i] - cur);
+ if (j < plus.size())
+ rightD = abs(plus[j] - cur);
+
+ if (leftD <= rightD)
+ {
+ ans += leftD;
+ cur = minus[i];
+ i++;
+ }
+ else
+ {
+ ans += rightD;
+ cur = plus[j];
+ j++;
+ }
+ }
+
+ cout << ans;
+}
\ No newline at end of file