728x90
반응형

분류 전체보기 279

[Kafka] Install Apache Kafka on Windows PC (Kafka 윈도우 설치)

Kafka 설치1. 공식 사이트에서 kafka를 다운로드 합니다.https://kafka.apache.org/downloads Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org작성일 기준 가장 최신 버전인 3.8.0으로 Binary downloads - Scala 2.13을 받아주겠습니다. 2. 압축해제다운로드가 완료가 된 후에 압축을 해제하고 C드라이브로 폴더를 옮겨주세요. 그리고 폴더명을 kafka로 변경해주세요(이후 과정 통일을 위해서 이렇게 진행하였습니다. 원하시는 위치가 있으면 그렇게 하셔도 되지만 이후 위치 설정할 때 본인이 설정한 위치로 적절히 바꾸셔야 합니다.)다음과 같이 되어있으면 다음 단계로 진행하셔도..

기타 2024.08.06

[LeetCode] C++ 1. Two Sum

https://leetcode.com/problems/two-sum/description/문제문제 분석- bruteforce로도 풀 수 있겠지만, 실행 시간을 줄이기 위해서 하나의 숫자를 고르고, Target 값에서 그 숫자를 뺀 값을 찾는 방식으로 푸는 것이 낫다고 생각하였습니다. 풀이 1#include #include using namespace std;class Solution {public: vector twoSum(vector& nums, int target) { for (int i = 0; i (iter - nums.begin())}; } } return {}; }};vector를 그대로 find로 하나씩 둘러보면서 찾으니 시..

[Python] 파이썬 기본 정렬 함수 알고리즘: 팀소트(Timsort)

Timsort파이썬을 위해 고안한 정렬 알고리즘애초에 학계에서 받아들여질 만한 우아한 알고리즘을 목표로 하기보다는 '실제 데이터는 대부분 이미 정렬되어 있을 것이다'라고 가정하고 실제 데이터에서 고성능을 낼 수 있도록 설계한 알고리즘즉, 실제 데이터는 대부분 이미 정렬되어 있을 것이라는 가정 하에 최적화개별적인 단일 알고리즘이 아니라 삽입 정렬과 병합 정렬을 휴리스틱하게 적절히 조합해 사용하는 정렬 알고리즘알고리즘최선평균최악퀵 정렬n log nn log nn^2병합 정렬n log nn log nn log n팀소트nn log nn log n 작동 방식런(Run) 생성리스트를 순회하면서 오름차순(또는 내림차순)으로 정렬된 연속된 부분 리스트(런)를 찾음이때, 리스트의 길이가 짧으면 삽입 정렬을 사용하여 정렬..

[LeetCode] C++ 5. Longest Palindromic Substring

https://leetcode.com/problems/longest-palindromic-substring/description/문제 문제 분석- 문자열을 직접 잘라서 하나씩 조사하는 것보다 포인터를 두 개를 두어서 중심을 기준으로 늘려가는 것이 효율적이라고 판단하였다. 풀이class Solution {private: string origin; int length; string expand(int left, int right){ while (left >= 0 && right = temp_2.length()){ if(temp_1.length() >= result.length()) result = temp_1; ..

[LeetCode] C++ 49. Group Anagrams

https://leetcode.com/problems/group-anagrams/description/ 문제 문제 분석- 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것이 anagram. 즉, 여기서는 anagram 관계를 가지는 것들을 모아서 반환하라는 것입니다.- anagram 관계에 있는 문자열들을 정렬하면 같은 문자열이 나올 것이기 때문에 이를 활용하면 될 것이라고 생각했습니다.(ex. ate -> aet, eat -> aet, tea -> aet)- 정렬 후 나온 문자열에 대해서 빠른 접근이 가능하도록 hash를 사용한 unordered_map을 사용하는 것이 좋다고 생각했습니다. key를 정렬 후 나온 문자열, value로 string vector를 가지고 있고 value에 계속 추가하는 ..

[LeetCode] C++ 819. Most Common Word

문제 문제 분석- 주어진 문자열 중에서 가장 많이 나온 단어를 찾는다. (banned에 있는 단어를 제외하고)- unordered_map으로 관리하는 것이 제일 효율적이라고 생각하였다. - 정규표현식을 사용하고 소문자로 통일시켜서 전처리를 한 다음에 단어 개수를 세면된다고 생각하였다.- banned에 있는 단어인지 하나씩 검사하고 처음부터 아예 안넣는 방식과 나중에 가장 많은 단어를 구할 때만 제외하는 방식 중 전자가 더 효율적이라고 생각하였다. 주어진 입력값에 따라 달라지겠지만 주어진 paragraph의 단어 수가 많아질 수록 매번 banned에 있는지 검사하는 것은 비효율적이라고 생각했기 때문이다. 하지만 전자의 방식을 unordered_set을 사용하면 일반적으로 O(1)에 find를 할 수 있기 ..

[LeetCode] C++ 937. Reorder Data in Log Files

https://leetcode.com/problems/reorder-data-in-log-files/description/ 문제 문제 분석1. letter-logs와 digit-logs를 분리해서 관리하고 letter-logs 뒤에 digit-logs를 이어붙이면 되겠다고 생각2. lettter-logs의 경우 identifier를 제외하고 나머지 부분들을 비교해서 순서를 정하고, 나머지 부분들이 모두 같은 경우에는 identifier를 기준으로 정렬 풀이#include #include #include #include #include #include using namespace std;// 로그 비교 함수bool compare(string a, string b) { stringstream s1(a)..

[LeetCode] C++ 344. Reverse String

https://leetcode.com/problems/reverse-string/문제 문제 분석- 출력을 거꾸로 하는게 아니라 해당 벡터 내부를 직접 조작해야하므로 맨 뒤에서부터 하나씩 맨 앞으로 넣으면 되지않을까 생각했다. 풀이 1using namespace std;class Solution {public: void reverseString(vector& s) { for(int i = 0; i insert를 통해 "삽입"을 해버리니까 계속 뒤에 있는 것들이 밀리게 되므로 굉장히 시간이 오래걸렸다. 풀이 2using namespace std;class Solution {public: void reverseString(vector& s) { int len = s.size..

[LeetCode] C++ 125. Valid Palindrome

https://leetcode.com/problems/valid-palindrome/description/ 문제 풀이1. ASCII 문자에 해당하는 글자만 남긴 뒤, 소문자로 바꾸자2. Palindrome이 성립하는지 순서대로 비교해보고 비교 중 다른 문자가 있다면 false를 반환하고, 나머지는 true를 반환하자 풀이 1#include // std::remove_if#include #include // std::isalnum, std::tolowerclass Solution {private: bool is_not_alnum(char c) { return !isalnum(static_cast(c)); } string preprocess(string s){ s..

[C++] Associative containers (set, map, multiset, multimap)

Associative Containers데이터를 특정 기준에 따라 정렬된 상태로 유지하는 자료구조삽입되는 데이터가 항상 자동으로 정렬된 상태를 유지하며, 이를 통해 효율적인 검색, 삽입, 삭제 연산을 제공key - value 구조를 통해 요소에 빠른 접근은 가능하지만 삽입되는 요소의 위치를 지정할 수 없음Red-Black Tree를 기반으로 하고 데이터의 추가/삭제/접근의 시간복잡도가 O(log n) std::set#include #include int main() { std::set mySet = {3, 1, 4, 1, 5, 9}; // 요소 삽입 mySet.insert(2); // 요소 삭제 mySet.erase(4); // 요소 검색 if (mySet.f..

728x90
반응형