diff --git a/contains-duplicate/rlawjd10.c b/contains-duplicate/rlawjd10.c new file mode 100644 index 000000000..f4db22cfb --- /dev/null +++ b/contains-duplicate/rlawjd10.c @@ -0,0 +1,14 @@ +int compare(const void* a, const void* b) { + return (*(int*)a - *(int*)b); // 오름차순 +} + +bool containsDuplicate(int* nums, int numsSize) { + qsort(nums, numsSize, sizeof(int), compare); + + for (int i = 1; i < numsSize; i++) { + if (nums[i] == nums[i-1]) + return 1; + } + return 0; +} + diff --git a/house-robber/rlawjd10.cpp b/house-robber/rlawjd10.cpp new file mode 100644 index 000000000..14686b05b --- /dev/null +++ b/house-robber/rlawjd10.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + int rob(vector& nums) { + if (nums.empty()) return 0; + if (nums.size() == 1) return nums[0]; + + int prev2 = 0; // 두 칸 전 (현재 집 털기) + int prev1 = 0; // 한 칸 전 (현재 집 안털기) + + for (int num : nums) { + int current = max(prev1, prev2 + num); + prev2 = prev1; + prev1 = current; + } + + return prev1; + } +}; + diff --git a/longest-consecutive-sequence/rlawjd10.cpp b/longest-consecutive-sequence/rlawjd10.cpp new file mode 100644 index 000000000..04a9bc180 --- /dev/null +++ b/longest-consecutive-sequence/rlawjd10.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + int longestConsecutive(vector& nums) { + unordered_map count; + // nums에 해당하는 index는 1을 표시 + for (int num: nums) { + count[num] = 1; + } + + vector> order(count.begin(), count.end()); + sort(order.begin(), order.end(), [](auto& a, auto& b) {return a.first < b.first;}); + + int length = 1; + int currentLength = 1; + if(order.empty()) return 0; + for (int i = 1; i < order.size(); i++) { + // 연속적인지 확인 + if (order[i].first == order[i-1].first +1) + currentLength++; + else + currentLength = 1; + length = max(length, currentLength); + } + + return length; + } +}; + diff --git a/top-k-frequent-elements/rlawjd10.cpp b/top-k-frequent-elements/rlawjd10.cpp new file mode 100644 index 000000000..26711a688 --- /dev/null +++ b/top-k-frequent-elements/rlawjd10.cpp @@ -0,0 +1,26 @@ +class Solution { +public: + vector topKFrequent(vector& nums, int k) { + unordered_map count; + + // 1. nums의 각 원소 count + for (int num : nums) { + count[num]++; // count에 num에 해당하는 value에는 1증가 + } + + // 2. 많이 나온 순서대로 정렬 + vector> freqs(count.begin(), count.end()); + sort(freqs.begin(), freqs.end(), [](pair a, pair b) { + return a.second > b.second; + }); + + // 3. 상위 k개 추출 + vector max(k); + for (int i = 0; i < k; i++) { + max[i] = freqs[i].first; + } + + return max; + } +}; + diff --git a/two-sum/rlawjd10.c b/two-sum/rlawjd10.c new file mode 100644 index 000000000..36746b823 --- /dev/null +++ b/two-sum/rlawjd10.c @@ -0,0 +1,13 @@ +int compare(const void* a, const void* b) { + return (*(int*)a - *(int*)b); // 오름차순 +} + +bool containsDuplicate(int* nums, int numsSize) { + qsort(nums, numsSize, sizeof(int), compare); + + for (int i = 1; i < numsSize; i++) { + if (nums[i] == nums[i-1]) + return 1; + } + return 0; +}