티스토리 뷰
정말 개인적으로 쓰려고 만들었지만 혹시 보고 싶어하실 수도 있으니 포스팅 해보도록 하겠습니다.
1. 에라토스테네스의 체 : 소수 찾기
// arr : 'true' if prime num, 'false' if not
bool *arr = new bool[n+1];
for(int i = 2; i < n+1; i++){
arr[i] = true;
}
// 에라토스테네스의 체
for(int i = 2; i * i <= n; i++){
if(arr[i]){
for(int j = i * i; j <= n; j += i)
arr[j] = false;
}
}
2. 정렬 후 중복 제거
sort(vect.begin(), vect.end());
auto tmp_ = unique(vect.begin(), vect.end());
vect.erase(tmp_, vect.end())
3. 역정렬
sort(order.begin(), order.end(), greater<char>());
4. 배열 search
int arr[] = {10, 20, 30, 40};
int *ptr;
ptr = find(arr, arr + 4, 30);
if(ptr != arr + 4){
// FOUND
cout << "FOUND, POS: " << *ptr << endl;
} else{
// NOT FOUND
cout << "NOT FOUND" << endl;
}
5. 벡터 search
vector<int> vec; // consider values are in it
vector<int>::iterator it;
it = find(vec.begin(), vec.end(), 30);
if (it != vec.end())
std::cout << "FOUND, POS : " << distance(vec.begin(), it) << endl;
else
std::cout << "NOT FOUND" << endl;
6. 문자열 파싱
#include <sstream>
string answer = "";
string token;
vector<int> tokVec;
stringstream split_stream(s);
while(split_stream >> token){
tokVec.push_back(stoi(token));
}
split_stream.clear();
7. Hash table using linked list
class Hash{
int BUCKET; // # of buckets // No. of buckets
list<int> *table; // pointer to an array containing buckets
public:
Hash(int V); // Constructor
void insertItem(int x); // inserts a key into hash table
void deleteItem(int key); // deletes a key from hash table
void displayHash();
};
Hash::Hash(int b) {
this->BUCKET = b;
table = new list<int>[BUCKET];
}
void Hash::insertItem(int key) {
int index = hashFunction(key);
table[index].push_back(key);
}
void Hash::deleteItem(int key) {
int index = hashFunction(key); // get the hash index of key
// find the key in (inex)th list
list <int> :: iterator i;
for (i = table[index].begin();
i != table[index].end(); i++) {
if (*i == key)
break;
}
// if key is found in hash table, remove it
if (i != table[index].end())
table[index].erase(i);
}
// function to display hash table
void Hash::displayHash() {
for (int i = 0; i < BUCKET; i++) {
cout << i;
for (auto x : table[i])
cout << " --> " << x;
cout << endl;
}
}
// Driver program
int main()
{
// array that contains keys to be mapped
int a[] = {15, 11, 27, 8, 12};
int n = sizeof(a)/sizeof(a[0]);
// insert the keys into the hash table
Hash h(7); // 7 is count of buckets in
// hash table
for (int i = 0; i < n; i++)
h.insertItem(a[i]);
// delete 12 from hash table
h.deleteItem(12);
// display the Hash table
h.displayHash();
return 0;
}
8. 이진수로 만들고 합치기
// num -> binary
vector<int> binVec; // binary number saved in order in vector
while(n > 1){
binVec.push_back(n % 2);
n = n / 2;
}
binVec.push_back(1);
reverse(binVec.begin(), binVec.end());
// binary -> num
for(int i = 0; i < binVec.size(); i++){
answer += pow(2, i) * binVec[binVec.size() - 1 - i];
}
9. 벡터 최대 / 최소 찾기
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = { 3, 4, 2, 6, 8, 10 };
int min = *min_element(vec.begin(), vec.end());
int max = *max_element(vec.begin(), vec.end());
}
'CS > 알고리즘' 카테고리의 다른 글
최단거리 알고리즘 ❷Floyd-Warshall Algorithm (0) | 2020.12.29 |
---|---|
최단거리 알고리즘 ❶ Dijkstra Algorithm (0) | 2020.12.29 |
[프로그래머스] 스킬트리 (배열) (0) | 2020.07.02 |
[프로그래머스] 멀쩡한 사각형 (일차함수 & 자료형) (0) | 2020.07.02 |
[개념] 순환 큐(Circular Queue) (0) | 2020.06.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 컴과졸작
- swacademy
- 졸업작품
- 코테
- 컴공졸작
- 소프트웨어아카데미
- 프로그래머스
- ios
- 부캠
- 인턴
- 부스트캠프2020
- TableView
- 커넥트재단
- OS
- 개발자인턴
- 코딩테스트
- 보안
- RxSwift
- 삼성
- 데이터분석
- 삼성소프트웨어아카데미
- 알고리즘
- firebase
- C++
- 운영체제
- nosql
- 부스트캠프
- 소프트웨어역량시험
- SWIFT
- 컴퓨터공학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함