Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ClassifyByAnagram/상규

From ZeroWiki
Revision as of 05:22, 7 February 2021 by imported>Unknown
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

프로그램 소스

#include <string>
#include <list>
#include <map>
#include <algorithm>
#include <iostream>

using namespace std;

class Dictionary
{
private:
	map<string, list<string> > Anagrams;

public:
	void InsertWord(string Word)
	{
		string key = Word;

		sort(key.begin(), key.end());

		if(Anagrams.find(key) == Anagrams.end())
			Anagrams[key] = list<string>();

		Anagrams[key].push_back(Word);
	}

	void OutputAnagram(list<string> Anagram)
	{
		ostream_iterator<string> os_iter(cout, " ");

		copy(Anagram.begin(), Anagram.end(), os_iter);
	}

	void OutputDictionary()
	{
		map<string, list<string> >::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