Efficient Coding
-
C++ 'map.find()' 쓰는 이유Efficient Coding/C++ 2024. 9. 16. 13:13
C++에서 map에 키가 존재하는 지 확인할 때, 아래 두 코드를 볼 수 있다.map mp;// 1if (mp[a] == 0)// 2if (mp.find(a) == mp.end()) 두 코드의 차이점을 알려면 컴퓨터가 어떻게 동작하는 지를 알아야한다. map[a] vs map.find(a)1. map[a]:map에서 키 a를 찾고 그에 해당하는 값을 반환한다.만약 a가 map에 존재하지 않는 경우, a를 맵에 자동으로 삽입하고, 값은 0이나 기본값으로 초기화한다.2. map.find(a):키가 존재하면 해당 키의 이터레이터를, 존재하지 않으면 map.end()를 반환한다. 결론map[a]는 의도치 않게 키 추가가 일어나고, 이는 메모리 사용량을 증가시킨다.키의 존재 여부만 확인하고 싶을 때는 map..
-
C++ 'map' vs 'unordered_map'Efficient Coding/C++ 2024. 8. 22. 17:43
C++에서 map과 unordered_map는 둘 다 키-값 쌍을 저장하는 연관 컨테이너로, 유사한 기능을 제공하지만 내부 구현 및 성능 특성에서 큰 차이가 있다. 각각의 차이점을 아래와 같이 비교할 수 있다. map vs unordered_map1. map: 구조: Red-Black 트리와 같은 이진 탐색 트리로 구현된다.원소 순서: 키를 기준으로 정렬된 상태로 원소들이 저장된다.탐색, 삽입, 삭제 속도: 평균적으로 O(log n)의 시간 복잡도.메모리 사용량: 트리 구조를 유지하기 위해 각 노드가 추가적인 포인터(부모, 자식)를 포함하므로 메모리 사용량이 많을 수 있다.키의 비교: 기본적으로 operator범위 기반 함수 지원: lower_bound, upper_bound, equal_range와..
-
C++ 'push_back' VS 'emplack_back' 뭐가 더 빠를까?Efficient Coding/C++ 2024. 7. 6. 21:34
std::vector와 같은 컨테이너에서 emplace_back과 push_back은 요소를 추가할 때 사용된다. 둘의 차이는 주로 요소를 추가하는 방식에 있다.push_back은 요소를 복사하거나 이동하여 컨테이너에 추가한다.emplace_back은 요소를 컨테이너 내부에서 직접 생성하여 추가한다. push_back vs emplace_back 1. push_back:이미 생성된 객체를 컨테이너에 추가한다. 즉, 객체를 생성한 후 복사 또는 이동을 통해 벡터에 추가한다.std::vector vec;MyClass obj(1, 2);vec.push_back(obj); // 복사vec.push_back(std::move(obj)); // 이동 2. emplace_back:객체를 컨테이너 내부에서 직접 생성합..
-
C++에서 함수 매개변수에 const &을 왜 쓸까?Efficient Coding/C++ 2024. 6. 27. 16:21
1. const &은 왜 쓸까?설명하기에 앞서 먼저 코드를 살펴보자. 1번 코드#include #include #include using namespace std;bool compare(pair a, pair b) { return a.first > n; vector> arr; int age; string name; while (n--) { cin >> age >> name; arr.emplace_back(age, name); } stable_sort(arr.begin(), arr.end(), compare); for (auto it : arr) cout 2번 코드#include #include #include using namespace std;bool compare(const pair& a,..
-
파이썬의 정렬 알고리즘은 어떤 알고리즘을 사용할까?Efficient Coding/Python 2024. 4. 26. 17:49
백준 문제를 풀다가 문득 궁금한 점이 생겼다.많은 정렬 알고리즘이 있는데, list.sort() 함수와 sorted(list) 함수는 그 중에어떤 알고리즘을 사용할까? Timsort 알고리즘파이썬의 내장 함수 정렬 알고리즘은 Timsort 알고리즘을 사용한다. Timsort 알고리즘은 2002년에 Tim Peters가 파이썬 언어를 위해 개발한 알고리즘으로, 병합 정렬(Merge Sort)와 삽입 정렬(Insert Sort)을 결합하여 만들어진 하이브리드 정렬 알고리즘이다. 이 알고리즘은 미리 어느 정도 정렬된 부분이 존재하는 실생활 데이터의 특성을 고려하여 더 빠르게 작동하도록 고안된 안고리즘이며 정렬 후에도 순서가 유지되는 안정적인 정렬 방법이다. 작동 방식Timsort 알고리즘은 배열을 효율적으..
-
파이썬에서 sys.stdin.readline은 왜 사용할까?Efficient Coding/Python 2024. 3. 22. 18:57
1. sys.stdin.readline은 왜 사용할까?설명하기에 앞서 먼저 코드를 살펴보자. 1번 코드n = int(input())words = set()for _ in range(n): words.add(input())arr = list(words)arr.sort()arr.sort(key=len)for i in arr: print(i) 2번 코드import sysinput = sys.stdin.readlinen = int(input())words = set()for _ in range(n): words.add(input().rstrip())arr = list(words)arr.sort()arr.sort(key=len)f..