diff --git a/README.md b/README.md
index e64e0dd61..f75555c42 100644
--- a/README.md
+++ b/README.md
@@ -471,8 +471,8 @@ If you would like to have collaborator permissions on the repo to merge your own
[0057 - Insert Interval](https://leetcode.com/problems/insert-interval/) | ❌
| [✔️](cpp%2F0057-insert-interval.cpp)
| [✔️](csharp%2F0057-insert-interval.cs)
| ❌
| [✔️](go%2F0057-insert-interval.go)
| [✔️](java%2F0057-insert-interval.java)
| [✔️](javascript%2F0057-insert-interval.js)
| [✔️](kotlin%2F0057-insert-interval.kt)
| [✔️](python%2F0057-insert-interval.py)
| ❌
| [✔️](rust%2F0057-insert-interval.rs)
| ❌
| [✔️](swift%2F0057-insert-interval.swift)
| [✔️](typescript%2F0057-insert-interval.ts)
[0056 - Merge Intervals](https://leetcode.com/problems/merge-intervals/) | ❌
| [✔️](cpp%2F0056-merge-intervals.cpp)
| [✔️](csharp%2F0056-merge-intervals.cs)
| ❌
| [✔️](go%2F0056-merge-intervals.go)
| [✔️](java%2F0056-merge-intervals.java)
| [✔️](javascript%2F0056-merge-intervals.js)
| [✔️](kotlin%2F0056-merge-intervals.kt)
| [✔️](python%2F0056-merge-intervals.py)
| ❌
| ❌
| [✔️](scala%2F0056-merge-intervals.scala)
| ❌
| [✔️](typescript%2F0056-merge-intervals.ts)
[0435 - Non Overlapping Intervals](https://leetcode.com/problems/non-overlapping-intervals/) | ❌
| [✔️](cpp%2F0435-non-overlapping-intervals.cpp)
| [✔️](csharp%2F0435-non-overlapping-intervals.cs)
| ❌
| [✔️](go%2F0435-non-overlapping-intervals.go)
| [✔️](java%2F0435-non-overlapping-intervals.java)
| [✔️](javascript%2F0435-non-overlapping-intervals.js)
| ❌
| [✔️](python%2F0435-non-overlapping-intervals.py)
| ❌
| ❌
| [✔️](scala%2F0435-non-overlapping-intervals.scala)
| ❌
| [✔️](typescript%2F0435-non-overlapping-intervals.ts)
-[0252 - Meeting Rooms](https://leetcode.com/problems/meeting-rooms/) | ❌
| [✔️](cpp%2F0252-meeting-rooms.cpp)
| [✔️](csharp%2F0252-meeting-rooms.cs)
| ❌
| ❌
| [✔️](java%2F0252-meeting-rooms.java)
| [✔️](javascript%2F0252-meeting-rooms.js)
| ❌
| [✔️](python%2F0252-meeting-rooms.py)
| ❌
| ❌
| ❌
| ❌
| ❌
-[0253 - Meeting Rooms II](https://leetcode.com/problems/meeting-rooms-ii/) | ❌
| [✔️](cpp%2F0253-meeting-rooms-ii.cpp)
| [✔️](csharp%2F0253-meeting-rooms-ii.cs)
| ❌
| ❌
| [✔️](java%2F0253-meeting-rooms-ii.java)
| [✔️](javascript%2F0253-meeting-rooms-ii.js)
| ❌
| [✔️](python%2F0253-meeting-rooms-ii.py)
| ❌
| [✔️](rust%2F0253-meeting-rooms-ii.rs)
| ❌
| ❌
| ❌
+[0252 - Meeting Rooms](https://leetcode.com/problems/meeting-rooms/) | ❌
| [✔️](cpp%2F0252-meeting-rooms.cpp)
| [✔️](csharp%2F0252-meeting-rooms.cs)
| ❌
| ❌
| [✔️](java%2F0252-meeting-rooms.java)
| [✔️](javascript%2F0252-meeting-rooms.js)
| [✔️](kotlin%2F0252-meeting-rooms.kt)
| [✔️](python%2F0252-meeting-rooms.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0253 - Meeting Rooms II](https://leetcode.com/problems/meeting-rooms-ii/) | ❌
| [✔️](cpp%2F0253-meeting-rooms-ii.cpp)
| [✔️](csharp%2F0253-meeting-rooms-ii.cs)
| ❌
| ❌
| [✔️](java%2F0253-meeting-rooms-ii.java)
| [✔️](javascript%2F0253-meeting-rooms-ii.js)
| [✔️](kotlin%2F0253-meeting-rooms-ii.kt)
| [✔️](python%2F0253-meeting-rooms-ii.py)
| ❌
| [✔️](rust%2F0253-meeting-rooms-ii.rs)
| ❌
| ❌
| ❌
[1288 - Remove Covered Intervals](https://leetcode.com/problems/remove-covered-intervals/) | [✔️](c%2F1288-Remove-Covered-Intervals.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
[1851 - Minimum Interval to Include Each Query](https://leetcode.com/problems/minimum-interval-to-include-each-query/) | ❌
| [✔️](cpp%2F1851-Minimum-Interval-To-Include-Each-Query.cpp)
| [✔️](csharp%2F1851-Minimum-Interval-to-Include-Each-Query.cs)
| ❌
| ❌
| [✔️](java%2F1851-Minimum-Interval-to-Include-Each-Query.java)
| ❌
| ❌
| [✔️](python%2F1851-minimum-interval-to-include-each-query.py)
| ❌
| ❌
| ❌
| ❌
| ❌
[0352 - Data Stream as Disjoint Intervals](https://leetcode.com/problems/data-stream-as-disjoint-intervals/) | ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0352-data-stream-as-disjoint-intervals.go)
| ❌
| [✔️](javascript%2F0352-data-stream-as-disjoint-intervals.js)
| ❌
| ❌
| ❌
| [✔️](rust%2F0352-data-stream-as-disjoint-intervals.rs)
| ❌
| ❌
| [✔️](typescript%2F0352-data-stream-as-disjoint-intervals.ts)
diff --git a/kotlin/0252-meeting-rooms.kt b/kotlin/0252-meeting-rooms.kt
new file mode 100644
index 000000000..f43f6cad0
--- /dev/null
+++ b/kotlin/0252-meeting-rooms.kt
@@ -0,0 +1,13 @@
+class Solution {
+ fun canAttendMeetings(intervals: Array): Boolean {
+ if (intervals.isEmpty()) return true
+ intervals.sortBy { it.first() }
+ var (_, previousEnd) = intervals.first()
+ for (i in 1..intervals.lastIndex) {
+ val (currentStart, currentEnd) = intervals[i]
+ if (currentStart < previousEnd) return false // they are overlapping
+ previousEnd = currentEnd
+ }
+ return true
+ }
+}
\ No newline at end of file
diff --git a/kotlin/0253-meeting-rooms-ii.kt b/kotlin/0253-meeting-rooms-ii.kt
new file mode 100644
index 000000000..88887f523
--- /dev/null
+++ b/kotlin/0253-meeting-rooms-ii.kt
@@ -0,0 +1,18 @@
+class Solution {
+ fun minMeetingRooms(intervals: Array): Int {
+ val startTimes = intervals.map { it.first() }.sorted()
+ val endTimes = intervals.map { it.last() }.sorted()
+ var (startIndex, endIndex) = Pair(0, 0)
+ var minMeetingRooms = 0
+ while (startIndex in startTimes.indices) {
+ if (startTimes[startIndex] < endTimes[endIndex]) {
+ minMeetingRooms++
+ startIndex++
+ } else {
+ startIndex++
+ endIndex++
+ }
+ }
+ return minMeetingRooms
+ }
+}
\ No newline at end of file