Study note/Coding test

Hash 문법 정리 (C++)

공대 아로마 2024. 4. 12. 17:27

기술면접을 위해 기초 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