diff --git a/missing-number/GUMUNYEONG.js b/missing-number/GUMUNYEONG.js new file mode 100644 index 000000000..7a0861164 --- /dev/null +++ b/missing-number/GUMUNYEONG.js @@ -0,0 +1,22 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var missingNumber = function (nums) { + nums = nums.sort(); + + for (let i = 0; i < nums.length; i++) { + if (nums[i] !== i) return i; + } + + return nums.length; +}; + +// TC +// nums 정렬을 하기 위해서 순회 (길이 n) -> 최선의 경우 O(n) 이지만, 평균적으로 O(n log n) +// 빠진 숫자를 찾기위해서 순회 (최대길이 n) +// 따라서 시간 복잡도는 최대 O(n log n) + +// SC +// 길이가 n인 배열을 저장할 공간 필요 +// O(n) diff --git a/valid-palindrome/GUMUNYEONG.js b/valid-palindrome/GUMUNYEONG.js new file mode 100644 index 000000000..cd375d212 --- /dev/null +++ b/valid-palindrome/GUMUNYEONG.js @@ -0,0 +1,31 @@ +/** + * @param {string} s + * @return {boolean} + */ +var isPalindrome = function (s) { + + let str = normalize(s); + let reverseStr = ""; + + function normalize(str) { + str = str.toLowerCase().replace(/[^a-z0-9]/g, ""); + + return str; + } + + + for (let i = str.length - 1; i >= 0; i--) { + reverseStr += str[i]; + }; + + + return str === reverseStr; +}; + +// TC : O(n) +// normalize 함수에서 n번(s의길이) 순회(toLowerCase) + n번 순회(replace) +// reverseStr 을 만들기 위해서 for문 - 길이 n +// = O(3n) 따라서 O(n) + +// SC : O(n) +// 변수 str , reversStr 모두 길이가 n 이므로 O(n)