diff --git a/missing-number/taekwon-dev.java b/missing-number/taekwon-dev.java
new file mode 100644
index 000000000..eab07c9c6
--- /dev/null
+++ b/missing-number/taekwon-dev.java
@@ -0,0 +1,22 @@
+/**
+ * 시간 복잡도: O(n)
+ *  - 공차가 1인 등차수열, 등차수열의 합 공식 활용하여 기대 값을 계산 -> O(1)
+ *  - 주어진 배열을 순회하면서 각 원소의 합을 계산 -> O(n)
+ *  - 기대 값에서 실제 각 원소의 합을 빼면 정답 -> O(1)
+ *
+ * 공간 복잡도: O(1)
+ *
+ */
+class Solution {
+    public int missingNumber(int[] nums) {
+        int len = nums.length;
+        int expectedSum = len * (len + 1) / 2;
+        int actualSum = 0;
+
+        for (int num: nums) {
+            actualSum += num;
+        }
+
+        return expectedSum - actualSum;
+    }
+}
diff --git a/valid-palindrome/taekwon-dev.java b/valid-palindrome/taekwon-dev.java
new file mode 100644
index 000000000..77a38c07c
--- /dev/null
+++ b/valid-palindrome/taekwon-dev.java
@@ -0,0 +1,24 @@
+/**
+ *  시간 복잡도: O(n)
+ *    - 정규식을 통해 Alphanumeric 만 남기기. -> O(n)
+ *    - 소문자로 변환 -> O(n)
+ *    - 투 포인터를 이용하기 때문에 -> O(n/2)
+ *  공간 복잡도: O(n)
+ */
+class Solution {
+    public boolean isPalindrome(String s) {
+        s = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
+
+        char[] c = s.toCharArray();
+
+        int left = 0;
+        int right = c.length - 1;
+
+        while (left < right) {
+            if (c[left++] != c[right--]) {
+                return false;
+            }
+        }
+        return true;
+    }
+}