=== 프로그램 소스 === {{{~cpp #include #include #include #include #include using namespace std; class Dictionary { private: map > Anagrams; public: void InsertWord(string Word) { string key = Word; sort(key.begin(), key.end()); if(Anagrams.find(key) == Anagrams.end()) Anagrams[key] = list(); Anagrams[key].push_back(Word); } void OutputAnagram(list Anagram) { ostream_iterator os_iter(cout, " "); copy(Anagram.begin(), Anagram.end(), os_iter); } void OutputDictionary() { map >::iterator iter; for(iter = Anagrams.begin() ; iter != Anagrams.end() ; iter++) { OutputAnagram(iter->second); cout << endl; } } }; void main() { string word; Dictionary dic; while(cin >> word) dic.InsertWord(word); dic.OutputDictionary(); } }}} P3 1GHz 512MB WinXP VC++7.0 Maximize Speed Optimization 4.1초 ---- ["ClassifyByAnagram"]