기술면접을 위해 기초 CS에 대한 복습중이다.
공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다.
내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의!
Hash 기본 문법
#include<unordered_map>
// 선언. string과 int 이런 식으로 pair로 선언함
unordered_map<string,int> hash;
// hash에 값 할당
// s를 돌면서 s의 i가 가리키는 값을 hash의 key로
vector<string> s;
for (auto& i : s) {
hash[i]++;
}
// 만약 "aroma"라는 key에 해당 value가 100이라면
// 아래는 100을 출력하게 된다.
cout << d["aroma"];
// first는 key, second은 value가 된다.
// 자동으로 iterator를 생성해서 hash맵을 돌게 된다.
// 아래는 aroma 100을 출력하게 된다.
for(auto& i : hash)
cout << i.first << " " << i.second << endl;
// 만약 vector형이면, 그에 따라 second 접근도 달라진다.
unordered_map<string,vector<int>> hash2;
for (auto& i : hash2) {
for (int j = 0; j < i.second.size(); j++)
cont << i.second[j] << endl;
}
// key가 있는지 검색할 때 find를 사용한다.
// 다 찾았는데도 없으면 iterator가 end()에 있을테니
// 아래 조건문은 's에 해당하는 key가 hash에 없으면'이라는 뜻
if (hash.find(s) == hash.end())
// key는 있는데 value가 없는 경우
if (hash[s].empty())
'Study note > Coding test' 카테고리의 다른 글
순열 - 재귀함수 (C++) (0) | 2024.04.12 |
---|---|
DP - Dynamic Programming (0) | 2024.04.12 |
Binary Search (0) | 2024.04.12 |
그래프 탐색 알고리즘: DFS/BFS (0) | 2024.04.12 |
그리디 & 구현 (0) | 2024.04.12 |