Programmers - 해시
- 완주하지 못한 선수
해쉬맵 사용법
#include
// 선언
unordered_map<string, int> hmap;
// 요소 삽입
hmap.insert(unordered_map<string, int>::value_type(str, 0));
// 또는
hmap[str] = 0;
// 순환하며 각 요소 참조하기
for(auto h = hmap.begin(); h != hmap.end(); h++) {
if(h->second < 0) // 요소의 값 second, 요소의 키 first
return h->first;
}
string객체를 sort를 이용하면 prefix(접두사)의 구분시 유용하다
sort는 string의 정렬에 이용하면 string의 첫 문자 부터 같은 위치의 한 문자(char)에 따라 정렬하게 된다
따라서 99 1111 1234 131 592 222 를 정렬하게 되면 1111 1234 131 222 592 99 순으로 정렬된다.
이를 이용하면 접두사로 오는 문자열은 바로 뒤에 옴을 알 수 있다.
경우의 수를 이용하는 문제로 스파이가 의상을 입지 않는 경우를 주의하며 고려해야한다.
의상이 1개인 경우 or 의상이 여러개인 경우
hmap.count(key)로 해당 key에 값이 있나 없나 알 수 있다.
unordered_map에 genre별로 vector를 집어넣고 2번째 값을 기준으로 정렬하기
unordered_map은 sort로 정렬이 불가능하기 때문에 vector로 옮겨 담은 뒤 정렬하도록 하자
// sort vector
vector<pair<string, int» genreSumVec(genreSum.begin(), genreSum.end()); // 옮겨 담는다
sort(genreSumVec.begin(), genreSumVec.end(), sortbysec); // 정렬
for (auto d = data.begin(); d != data.end(); d++)
sort(d->second.begin(), d->second.end(), sortbysec2);
// sort를 내림차순 및 2번째 문자열을 기준으로 정렬하기
bool sortbysec(const pair<int, int>& a, const pair<int, int>& b) {
return (a.second > b.second);
}
// a, b : vector<pair<int, int»
sort(a, b, sortbysec);
댓글남기기