1. 1st Source ¶
#include <map>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
class Anagram
{
private:
typedef map< string, map<char, int> >::iterator MSMCII;
typedef map< char, int > MCI;
map< string, map<char, int> > _anagramTable;
public:
void CalWhatAnagram(const string& str)
{
MCI howManyEachAlphabet;
for(int i = 0 ; i < str.size() ; ++i)
howManyEachAlphabet[ str[i] ] += 1;
_anagramTable[str] = howManyEachAlphabet;
}
void Show()
{
while( !_anagramTable.empty() )
{
MCI value = _anagramTable.begin()->second;
for(MSMCII i = _anagramTable.begin() ; i != _anagramTable.end() ; )
{
if(i->second == value)
{
cout << i->first << " ";
_anagramTable.erase(i++);
}
else
{
++i;
}
}
cout << endl;
}
}
};
int main()
{
Anagram anagram;
ifstream fin("input.dat");
string t;
while(!fin.eof())
{
getline(fin, t);
anagram.CalWhatAnagram(t);
}
anagram.Show();
fin.close();
return 0;
}
2. 1st ¶
- 파 , 키 , 키 해하 <파, 파 > Pair Pair 한.(--; 하)
- , n, 평 m 하, Pair 판하 Θ(mn) . map 테 Θ(n) .
- , n, 평 m 하, Pair 판하 Θ(mn) . map 테 Θ(n) .
- 할 map 회하, 한 anagram .( 하.)
- . Θ(n*n) .
- . Θ(n*n) .
- ... 클. Θ(n*n) 행 할 .
4. 2nd Source ¶
~cpp
#include <map>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;
class Anagram
{
private:
typedef map<char, int> MCI;
typedef vector<string> LS;
typedef map< MCI, LS > MALS;
typedef MALS::iterator MALSI;
typedef LS::iterator LSI;
MALS _anagramTable;
MCI CalculateWhatAnagram(const string& str)
{
MCI howManyEachAlphabet;
for(int i = 0 ; i < str.size() ; ++i)
howManyEachAlphabet[ str[i] ] += 1;
return howManyEachAlphabet;
}
public:
void BoundAnagram(char* fileName)
{
ifstream fin(fileName);
string str;
while(!fin.eof())
{
getline(fin, str);
_anagramTable[ CalculateWhatAnagram(str) ].push_back(str);
}
}
void ShowAnagram()
{
for(MALSI i = _anagramTable.begin() ; i != _anagramTable.end() ; ++i)
{
for(LSI j = (i->second).begin() ; j != (i->second).end(); ++j)
{
cout << *j << " ";
}
cout << endl;
}
}
};
int main()
{
Anagram ana;
ana.BoundAnagram("input.dat");
ana.ShowAnagram();
return 0;
}
5. 2nd ¶
- key : 파 한 map 테, value : string list. 해.
- 1st .. 90 .
- 행 해, n, 평 m 하, : Θ(mn), : Θ(n) 행 m n 훠~~~~~ . Θ(n) ?--; .
6. 2nd ¶
- .
- 1(2) . . 10 ..--; 10 .
- 파 하 10(2) . --; 파 할
- 화 하 . "~~~ inputed!" 하 했 10 , 하 1 .
- list vector 퓨 하 6.2 .










