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; + } +}