diff --git a/invert-binary-tree/mintheon.java b/invert-binary-tree/mintheon.java
new file mode 100644
index 000000000..776b676b9
--- /dev/null
+++ b/invert-binary-tree/mintheon.java
@@ -0,0 +1,52 @@
+import java.util.ArrayDeque;
+import java.util.Queue;
+
+/**
+ * Definition for a binary tree node.
+ * public class TreeNode {
+ *     int val;
+ *     TreeNode left;
+ *     TreeNode right;
+ *     TreeNode() {}
+ *     TreeNode(int val) { this.val = val; }
+ *     TreeNode(int val, TreeNode left, TreeNode right) {
+ *         this.val = val;
+ *         this.left = left;
+ *         this.right = right;
+ *     }
+ * }
+ */
+//시간복잡도: O(n)
+//공간복잡도: O(n)
+class Solution {
+  public TreeNode invertTree(TreeNode root) {
+    if(root == null) {
+      return root;
+    }
+
+    Queue<TreeNode> queue = new ArrayDeque<>();
+    queue.add(root);
+
+    while(!queue.isEmpty()) {
+      TreeNode cur = queue.poll();
+
+      if(cur == null) {
+        continue;
+      }
+
+      TreeNode temp = cur.left;
+      cur.left = cur.right;
+      cur.right = temp;
+
+      if(cur.left != null) {
+        queue.add(cur.left);
+      }
+
+      if(cur.right != null) {
+        queue.add(cur.right);
+      }
+    }
+
+    return root;
+  }
+}
diff --git a/search-in-rotated-sorted-array/mintheon.java b/search-in-rotated-sorted-array/mintheon.java
new file mode 100644
index 000000000..934539981
--- /dev/null
+++ b/search-in-rotated-sorted-array/mintheon.java
@@ -0,0 +1,41 @@
+class Solution {
+  // 시간 복잡도: O(log n)
+  // 공간 복잡도: O(1);
+  public int search(int[] nums, int target) {
+    int left = 0;
+    int right = nums.length - 1;
+
+    while(left <= right) {
+      int mid = (left + right) / 2;
+
+      if(nums[mid] > nums[nums.length - 1]) {
+        left = mid + 1;
+      } else {
+        right = mid - 1;
+      }
+    }
+
+    int answer = binarySearch(nums, 0, left - 1, target);
+
+    return answer != -1 ? answer : binarySearch(nums, left, nums.length - 1, target);
+  }
+
+  private int binarySearch(int[] nums, int leftIndex, int rightIndex, int target) {
+    int left = leftIndex;
+    int right = rightIndex;
+
+    while(left <= right) {
+      int mid = (left + right) / 2;
+
+      if(nums[mid] == target) {
+        return mid;
+      } else if (nums[mid] < target) {
+        left = mid + 1;
+      } else {
+        right = mid - 1;
+      }
+    }
+
+    return -1;
+  }
+}