From df0d71c109ade97727e30a0f220afd23e18fe066 Mon Sep 17 00:00:00 2001 From: aa601 Date: Wed, 11 Dec 2024 17:47:17 +0900 Subject: [PATCH 1/4] contains-duplicate --- contains-duplicate/aa601.c | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 contains-duplicate/aa601.c diff --git a/contains-duplicate/aa601.c b/contains-duplicate/aa601.c new file mode 100644 index 000000000..c0c3c52a1 --- /dev/null +++ b/contains-duplicate/aa601.c @@ -0,0 +1,60 @@ +#include +#include + +void merge(int *nums, int left, int mid, int right) +{ + int i; + int j; + int k; + int leftArr[mid - left + 1]; + int rightArr[right - mid]; + + i = -1; + while (++i < mid - left + 1) // 왼쪽 분할된 부분 넣기 + leftArr[i] = nums[left + i]; + i = -1; + while (++i < right - mid) // 오른쪽 분할된 부분 넣기 + rightArr[i] = nums[mid + i + 1]; + i = 0; + j = 0; + k = left; // **** nums배열인덱스 => left부터 시작 + // 나누어진 배열끼리 비교해서 nums배열 재배치 + while ((i < mid - left + 1) && (j < right - mid)) { + if (leftArr[i] <= rightArr[j]) + nums[k] = leftArr[i++]; + else + nums[k] = rightArr[j++]; + ++k; + } + while (i < mid - left + 1) // left배열 남아있으면 마저 삽입 + nums[k++] = leftArr[i++]; + while (j < right - mid) // right배열 남아있으면 마저 삽입 + nums[k++] = rightArr[j++]; +} + +void mergeSort(int *nums, int left, int right) { + int mid; + + if (left < right) + { + mid = (left + right) / 2; + mergeSort(nums, left, mid); // 왼쪽분할 + mergeSort(nums, mid + 1, right); // 오른쪽분할 + merge(nums, left, mid, right); + } +} + +bool containsDuplicate(int* nums, int numsSize) { + int i; + + mergeSort(nums, 0, numsSize - 1); + i = -1; + while (++i + 1 < numsSize) { + if (nums[i] == nums[i + 1]) + return (true); + } + return (false); +} + + + From 3b86fe84cfb6cdad92b9f0acbc2a95c1c0e1ec88 Mon Sep 17 00:00:00 2001 From: aa601 Date: Wed, 11 Dec 2024 19:24:49 +0900 Subject: [PATCH 2/4] add : solution of the is_palindrome --- valid-palindrome/aa601.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 valid-palindrome/aa601.c diff --git a/valid-palindrome/aa601.c b/valid-palindrome/aa601.c new file mode 100644 index 000000000..378261400 --- /dev/null +++ b/valid-palindrome/aa601.c @@ -0,0 +1,27 @@ +bool isPalindrome(char* s) { + int i; + int j; + int size; + char tmp; + int flag; + + i = 0; + size = strlen(s); + j = size - 1; + flag = 1; + while (i < j) { + if (!isalnum(s[i])) { + ++i; + continue ; + } + else if (!isalnum(s[j])) { + --j; + continue ; + } + if (tolower(s[i++]) != tolower(s[j--])) { + flag = 0; + break ; + } + } + return (flag); +} \ No newline at end of file From 593e06a4e1c99c9e55740a1f45945b2e5a73cf51 Mon Sep 17 00:00:00 2001 From: aa601 <152935684+aa601@users.noreply.github.com> Date: Fri, 13 Dec 2024 00:10:23 +0900 Subject: [PATCH 3/4] added line --- valid-palindrome/aa601.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/valid-palindrome/aa601.c b/valid-palindrome/aa601.c index 378261400..83dd4dab3 100644 --- a/valid-palindrome/aa601.c +++ b/valid-palindrome/aa601.c @@ -24,4 +24,4 @@ bool isPalindrome(char* s) { } } return (flag); -} \ No newline at end of file +} From f3a9a4abcd4e227485092f082363e04c5e58839f Mon Sep 17 00:00:00 2001 From: aa601 Date: Fri, 13 Dec 2024 01:31:23 +0900 Subject: [PATCH 4/4] add : solution house-robber --- house-robber/aa601.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 house-robber/aa601.c diff --git a/house-robber/aa601.c b/house-robber/aa601.c new file mode 100644 index 000000000..3e3ef85a8 --- /dev/null +++ b/house-robber/aa601.c @@ -0,0 +1,40 @@ +int rob(int* nums, int numsSize) { + int *dp; + int max; + int i; + int j; + + // dp에 nums 복사 + dp = malloc(sizeof(int) * numsSize); + if (!dp) + return (0); + i = -1; + while (++i < numsSize) { + dp[i] = nums[i]; + } + + // dp 시작 + i = 0; + j = 0; + while (++i < numsSize) { + j = 0; + max = dp[i]; + while (j + 1 < i) { + if (max < dp[i] + dp[j]) + max = dp[i] + dp[j]; + ++j; + } + dp[i] = max; + } + + // dp 배열의 최종 max값 리턴 + i = -1; + max = dp[0]; + while (++i < numsSize) { + if (max < dp[i]) + max = dp[i]; + } + free(dp); + return (max); +} +