코딩 테스트 대비 정리
C++ STL
vector
: 배열(array)와 비슷하게 사용가능map
- 파이썬의 Dictionary와 비슷함
1 2
map<string, int> m; m['jiwon'] = 1;
- 파이썬의 Dictionary와 비슷함
unordered_map
- map에서 정렬이 되어 있지 않은 버전 -> 더 빠르다
set
- unique한 원소들을 정렬된 상태로 보관
queue
priority queue
알고리즘 종류
- DFS, BFS
- DFS : stack or 반복문
- BFS : queue
- Binary Search
- C++
lower_bound
,upper_bound
- C++
- Dynamic Programming
- Greedy
- Priority queue
- Hash Map
- Union Find
- Trie
- Kruskal (Minimum Spanning Tree)
- Shortest Path(최단 경로)
- Dijkstra
- Bellman-Ford
- Floyd-Warshall
- 조합(Combination)
next_permutation()
orprev_permutation()
TIP
1억(10^8) == 1초
로 알고리즘의 속도를 판별해 볼 수 있다.- 틀리는 경우에는 자료형의 크기 / 특이값 input 등에 대해 생각해보자
- 오름차순 정렬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// `priority_queue`
struct compare
{
bool operator()(pii a, pii b)
{
return a.second > b.second;
}
};
/* 클래스를 정의하는 경우 */
// 오름차순
bool operator<(edge &e)
{
return this->dist < e.dist;
}
// sort()의 custom compare 함수
bool compare(edge a, edge b)
{
return a.dist < b.dist;
}
- C++에서의 클래스 선언 및 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class edge
{
public:
// 멤버 변수 선언
int node[2];
int dist;
// 생성자 선언
edge(int a, int b, int dist)
{
this->node[0] = a;
this->node[1] = b;
this->dist = dist;
}
};
vector.push_back(edge(a, b, dist));
주의
에라토스테네스의 체
는 여러 개의 숫자에 대해서 소수를 판별해야 할 때 유용하다. 하지만 지나치게 큰 숫자의 경우 (ex - 10^12)에는 배열이 너무 커지기 때문에 메모리 초과가 발생할 수 있다는 점을 염두에 두어야 한다.- 관련 문제 : k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)