<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CryptKicker2%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD</id>
	<title>CryptKicker2/문보창 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CryptKicker2%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CryptKicker2/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;action=history"/>
	<updated>2026-05-14T18:47:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=CryptKicker2/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=31017&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CryptKicker2/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=31017&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==== 소감 ====&lt;br /&gt;
2005/02/19 Accepted 0:00.006 64 &lt;br /&gt;
암호화 방법이라. 재밌는 문제. 꼼꼼히 따져주기만 하면 되는 문제.&lt;br /&gt;
&lt;br /&gt;
==== 코드 ====&lt;br /&gt;
 // no850 - Crypt Kicker2&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cstring&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;string&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cctype&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 /* 평문공격법&lt;br /&gt;
 &amp;quot;the quick brown fox jumps over the lazy dog&amp;quot;&lt;br /&gt;
 43자&lt;br /&gt;
 빈도수 4, 3, 2, 2, 2, 2, 1, ...&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 const int MAX_LEN = 81;&lt;br /&gt;
 const int PROPER_LEN = 43;&lt;br /&gt;
 &lt;br /&gt;
 bool input(string &amp;amp;amp; s, char * rul);&lt;br /&gt;
 bool isreplace(char * str);&lt;br /&gt;
 void findRule(char * str, char * rul);&lt;br /&gt;
 void decoding(string &amp;amp;amp; s, char * rul);&lt;br /&gt;
 inline void output(string &amp;amp;amp; s) { cout &amp;amp;lt;&amp;amp;lt; s; }&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	int nCase;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; nCase;&lt;br /&gt;
 	cin.get(), cin.get();&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	char rule[26];&lt;br /&gt;
 	int i;&lt;br /&gt;
 	for (i=0; i&amp;amp;lt;nCase; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		string s;&lt;br /&gt;
 		if (input(s, rule))&lt;br /&gt;
 		{&lt;br /&gt;
 			decoding(s, rule);&lt;br /&gt;
 			output(s);&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;No solution.\n&amp;quot;;&lt;br /&gt;
 		if (i != nCase-1)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool input(string &amp;amp;amp; s, char * rul)&lt;br /&gt;
 {&lt;br /&gt;
 	char str[MAX_LEN];&lt;br /&gt;
 	bool serch = false;&lt;br /&gt;
 	while (cin.peek() != &amp;#039;\n&amp;#039; &amp;amp;amp;&amp;amp;amp; cin.peek() != EOF)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin.getline(str, MAX_LEN, &amp;#039;\n&amp;#039;);&lt;br /&gt;
 		if (isreplace(str)) &lt;br /&gt;
 		{&lt;br /&gt;
 			serch = true;&lt;br /&gt;
 			findRule(str, rul);&lt;br /&gt;
 		}&lt;br /&gt;
 		s += str;&lt;br /&gt;
 		s += &amp;#039;\n&amp;#039;;&lt;br /&gt;
 	}&lt;br /&gt;
 	cin.get();&lt;br /&gt;
 	if (serch)&lt;br /&gt;
 		return true;&lt;br /&gt;
 	return false;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool isreplace(char * str)&lt;br /&gt;
 {&lt;br /&gt;
 	int len = strlen(str);&lt;br /&gt;
 	if (len != PROPER_LEN)			// 1차 - 길이 비교&lt;br /&gt;
 		return false;&lt;br /&gt;
 	// 여백 위치 비교&lt;br /&gt;
 	else if (!(str[3] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; str[9] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; str[15] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; str[19] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; str[25] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
 		str[30] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; str[34] == &amp;#039; &amp;#039; &amp;amp;amp;&amp;amp;amp; str[39] == &amp;#039; &amp;#039;))&lt;br /&gt;
 		return false;&lt;br /&gt;
 	int i;&lt;br /&gt;
 	int count2, count3, count4;&lt;br /&gt;
 	count2 = count3 = count4 = 0;&lt;br /&gt;
 	int alpa[26] = {0,};&lt;br /&gt;
 	for (i=0; i&amp;amp;lt;len; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (isalpha(str[i]))&lt;br /&gt;
 			alpa[str[i]-97]++;	&lt;br /&gt;
 	}&lt;br /&gt;
 	for (i=0; i&amp;amp;lt;26; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (alpa[i] == 2)&lt;br /&gt;
 			count2++;&lt;br /&gt;
 		else if (alpa[i] == 3)&lt;br /&gt;
 			count3++;&lt;br /&gt;
 		else if (alpa[i] == 4)&lt;br /&gt;
 			count4++;&lt;br /&gt;
 	}&lt;br /&gt;
 	if (!(count2 == 4 &amp;amp;amp;&amp;amp;amp; count3 == 1 &amp;amp;amp;&amp;amp;amp; count4 == 1))		// 알파벳 빈도수 조사&lt;br /&gt;
 		return false;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void findRule(char * str, char * rul)&lt;br /&gt;
 {&lt;br /&gt;
 	char strOrin[] = &amp;quot;the quick brown fox jumps over the lazy dog&amp;quot;;&lt;br /&gt;
 	int i;&lt;br /&gt;
 	for (i=0; i&amp;amp;lt;PROPER_LEN; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (isalpha(str[i]))&lt;br /&gt;
 		{&lt;br /&gt;
 			rul[str[i]-97] =  strOrin[i];&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void decoding(string &amp;amp;amp; s, char * rul)&lt;br /&gt;
 {&lt;br /&gt;
 	int i;&lt;br /&gt;
 	int len = s.size();&lt;br /&gt;
 	for (i=0; i&amp;amp;lt;len; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (isalpha(s[i]))&lt;br /&gt;
 		{&lt;br /&gt;
 			s[i] = rul[s[i]-97];		&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[CryptKicker2]] [[문보창]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>