C++์์๋ insert ํจ์์ ๋ฆฌํด๊ฐ์ ํ์ฉํ ์ ์๋ค.
insert ํจ์์ ํ๋กํ ํ์ : pair<iterator,bool> insert (const pair<const Key, Type>& val);
์ค๋ณต๋ Key๊ฐ ์กด์ฌํ์ง ์์ ์ฝ์
์ฑ๊ณต ์, <insert๋์ด์ง element์ iterator, true> ์ pair๋ฅผ ๋ฐํํ๋ค.
์ค๋ณต๋ Key๊ฐ ์กด์ฌํด, ์ฝ์
์คํจ ์, <์ค๋ณต๋ Key์ element์ iterator, false> ์ pair๋ฅผ ๋ฐํํ๋ค.
#include <iostream>
#include <map>
using namespace std;
int main() {
int T, N, i, j, ans;
string value, key;
map<string, int> m;
pair<map<string, int>::iterator, bool> pr;
cin >> T;
while (T-- > 0) {
m.clear();
ans = 1;
cin >> N;
for (j = 0; j < N; j++) {
cin >> value >> key;
pr = m.insert(pair<string, int>(key, 1)); // ์ฃผ๋ชฉ !
if (!pr.second) m[key]++; // Key๊ฐ ์ค๋ณต๋์ด map์ ์ฝ์
ํ์ง ๋ชปํ ๊ฒฝ์ฐ์ ์ง์ 1์ ๋ํด์ค.
}
for (map<string, int>::iterator it = m.begin(); it != m.end(); it++) {
ans *= it->second + 1;
}
cout << ans - 1 << "\n";
}
}
boj 9375 ํจ์ ์ ์ ํ๋น ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ์๋ก ์๊ฒ ๋ ์ ๋ณด์ด๋ค.
map, set ์ ํ์ฉํ๋ค๋ณด๋ฉด ๋ฌธ์ ๊ตฌ์กฐ ์ ์ค๋ณต๋ key๋ฅผ ์ผ๋ถ๋ฌ ์ฝ์ ํด๋ณด๊ณ ํ์ธํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ, ์ค๋ณต๋ Key ๊ฐ์ด ๋ช ๋ฒ ์ ๋ ฅ๋์๋์ง ํ์๋ฅผ ์ ์ฅํด ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค.
std::map<std::string, int> temp;
auto itr = temp.find("my_key");
if (itr == temp.end()) {
temp.insert({ "my_key", 1 });
} else {
itr->second++;
}
์ด๋ ๊ฒ ์๋ชป๋ ์ฝ๋๋ก ์ฝ๋ฉํ๋ ์ฌ๋๋ค์ด ๊ฝค ๋ง์๋ฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๋ฐฉ๋ฒ์ด๋ค!