<?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=ErdosNumbers%2F%EC%A1%B0%ED%98%84%ED%83%9C</id>
	<title>ErdosNumbers/조현태 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ErdosNumbers%2F%EC%A1%B0%ED%98%84%ED%83%9C"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;action=history"/>
	<updated>2026-05-15T05:42:01Z</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=ErdosNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=84356&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0002 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=84356&amp;oldid=prev"/>
		<updated>2026-03-27T00:16:02Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0002 pages from live compare&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;amp;diff=84356&amp;amp;oldid=31688&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=31688&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=ErdosNumbers/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=31688&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:14Z</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;
끙..;;  처음에 문제를 보고 C++로 자료구조를 만들어서 해보자는 생각으로 했지만..&lt;br /&gt;
왠지 더 복잡해진듯 하다~! @.@&lt;br /&gt;
메모리를 좀 낭비하더라도 중복을 줄여서, 양이 많아질때의 연산을 줄여보자는 생각이었지만..&lt;br /&gt;
생각해보니 많아지면 그게 그거라는..후후후...&lt;br /&gt;
...난 뭐한거지..;;&lt;br /&gt;
&lt;br /&gt;
어쨋든 책마다의 저자를 연결하는 자료구조 하나..&lt;br /&gt;
책 저자의 자료구조 하나..&lt;br /&gt;
이렇게 두개를 만들어서 나름대로는 연산이 쪼~~~끔 줄었다고 말하고 싶지만..&lt;br /&gt;
다만들고 나니 그것도 아닐지도..훗.. 괜한 고생이었나..;;&lt;br /&gt;
== 소스 ==&lt;br /&gt;
 === main.cpp ===&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;quot;class.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 char TARGET_NAME[]=&amp;quot;Erdos, P.&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 void main()&lt;br /&gt;
 {&lt;br /&gt;
 	int simulation;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;시뮬레이션 횟수를 입력하십시오.\n&amp;amp;gt;&amp;amp;gt;&amp;quot;;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; simulation;&lt;br /&gt;
 	for (;simulation&amp;amp;gt;0;--simulation)&lt;br /&gt;
 	{&lt;br /&gt;
 		data_manager* datas=new data_manager();&lt;br /&gt;
 		int number_books, number_writers;&lt;br /&gt;
 		char temp[256];&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;논문의 수와 탐색할 저자의 수를 입력하십시오.\n&amp;amp;gt;&amp;amp;gt;&amp;quot;;&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; number_books &amp;amp;gt;&amp;amp;gt; number_writers;&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;논문의 저자와 제목을 입력하세요.\n&amp;quot;;&lt;br /&gt;
 		for (int i=0; i&amp;amp;lt;number_books; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			fflush(stdin);&lt;br /&gt;
 			cin.getline(temp,256);&lt;br /&gt;
 			datas-&amp;amp;gt;swallow(temp);&lt;br /&gt;
 		}&lt;br /&gt;
 		datas-&amp;amp;gt;process_erdos_number(TARGET_NAME);&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;찾을 저자의 이름을 입력하세요.\n&amp;quot;;&lt;br /&gt;
 		for (int i=0; i&amp;amp;lt;number_writers; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			fflush(stdin);&lt;br /&gt;
 			cin.getline(temp,256);&lt;br /&gt;
 			int score=datas-&amp;amp;gt;get_score(temp);&lt;br /&gt;
 			if (score!=0)&lt;br /&gt;
 				cout &amp;amp;lt;&amp;amp;lt; temp &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot; &amp;amp;lt;&amp;amp;lt; score &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
 			else if (-1!=score)&lt;br /&gt;
 				cout &amp;amp;lt;&amp;amp;lt; temp &amp;amp;lt;&amp;amp;lt; &amp;quot; infinity\n&amp;quot;;&lt;br /&gt;
 			else&lt;br /&gt;
 				cout &amp;amp;lt;&amp;amp;lt; &amp;quot;저자를 찾을 수 없습니다.\n&amp;quot;;&lt;br /&gt;
 		}&lt;br /&gt;
 		delete datas;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 === class.h ===&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 class human_data{&lt;br /&gt;
 private:&lt;br /&gt;
 	char* names;&lt;br /&gt;
 	int score;&lt;br /&gt;
 	int tuched;&lt;br /&gt;
 	int number_line;&lt;br /&gt;
 	int* line_numbers;&lt;br /&gt;
 	void str_copy(char**, char*);&lt;br /&gt;
 public:&lt;br /&gt;
 	human_data(char* );&lt;br /&gt;
 	~human_data();&lt;br /&gt;
 	void input_line(int );&lt;br /&gt;
 	void change_score(int );&lt;br /&gt;
 	void get_passive();&lt;br /&gt;
 	int get_score();&lt;br /&gt;
 	char* get_name();&lt;br /&gt;
 	int get_number_line();&lt;br /&gt;
 	int get_line_number(int );&lt;br /&gt;
 	int get_tuched();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class line_data{&lt;br /&gt;
 private:&lt;br /&gt;
 	human_data* include_data;&lt;br /&gt;
 	line_data* prv;&lt;br /&gt;
 	line_data* next;&lt;br /&gt;
 public:&lt;br /&gt;
 	line_data(human_data* , line_data* );&lt;br /&gt;
 	~line_data();&lt;br /&gt;
 	void link(line_data* );&lt;br /&gt;
 	human_data* get_data();&lt;br /&gt;
 	line_data* get_next();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class data_manager{&lt;br /&gt;
 private:&lt;br /&gt;
 	int number_mans, number_books;&lt;br /&gt;
 	human_data** mans;&lt;br /&gt;
 	line_data** books;&lt;br /&gt;
 	void creat_book();&lt;br /&gt;
 	void creat_man(char* );&lt;br /&gt;
 	int str_cmp(char* , char* );&lt;br /&gt;
 	int such_man(char* );&lt;br /&gt;
 	void str_swallow(char* );&lt;br /&gt;
 public:&lt;br /&gt;
 	data_manager();&lt;br /&gt;
 	~data_manager();&lt;br /&gt;
 	void swallow(char* );&lt;br /&gt;
 	void process_erdos_number(human_data* );&lt;br /&gt;
 	void process_erdos_number(char* );&lt;br /&gt;
 	int get_score(char* );&lt;br /&gt;
 };&lt;br /&gt;
 === class.cpp ===&lt;br /&gt;
 #include &amp;quot;class.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 void human_data::str_copy(char** target, char* original)&lt;br /&gt;
 {&lt;br /&gt;
 	register int i=0;&lt;br /&gt;
 	while (0!=original[i])&lt;br /&gt;
 		++i;&lt;br /&gt;
 	*target=new char[i+1];&lt;br /&gt;
 	for (register int j=0; j&amp;amp;lt;=i; ++j)&lt;br /&gt;
 		(*target)[j]=original[j];&lt;br /&gt;
 }&lt;br /&gt;
 human_data::human_data(char* input_names)&lt;br /&gt;
 {&lt;br /&gt;
 	str_copy(&amp;amp;amp;names,input_names);&lt;br /&gt;
 	score=0;&lt;br /&gt;
 	tuched=0;&lt;br /&gt;
 	number_line=0;&lt;br /&gt;
 	line_numbers=NULL;&lt;br /&gt;
 }&lt;br /&gt;
 human_data::~human_data()&lt;br /&gt;
 {&lt;br /&gt;
 	if (NULL!=names)&lt;br /&gt;
 		delete names;&lt;br /&gt;
 	if (line_numbers!=NULL)&lt;br /&gt;
 		delete line_numbers;&lt;br /&gt;
 }&lt;br /&gt;
 void human_data::input_line(int input_line_number)&lt;br /&gt;
 {&lt;br /&gt;
 	int* temp_numbers=new int[number_line+1]; &lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;number_line; ++i) &lt;br /&gt;
 		temp_numbers[i]=line_numbers[i]; &lt;br /&gt;
 	temp_numbers[number_line]=input_line_number;&lt;br /&gt;
 	if (NULL!=line_numbers)&lt;br /&gt;
 		delete line_numbers;&lt;br /&gt;
 	line_numbers=temp_numbers;&lt;br /&gt;
 	++number_line; &lt;br /&gt;
 }&lt;br /&gt;
 void human_data::change_score(int new_score)&lt;br /&gt;
 {&lt;br /&gt;
 	score=new_score;&lt;br /&gt;
 	if (0==tuched)&lt;br /&gt;
 		tuched=1;&lt;br /&gt;
 }&lt;br /&gt;
 void human_data::get_passive()&lt;br /&gt;
 {&lt;br /&gt;
 	tuched=-1;&lt;br /&gt;
 }&lt;br /&gt;
 int human_data::get_score()&lt;br /&gt;
 {&lt;br /&gt;
 	return score;&lt;br /&gt;
 }&lt;br /&gt;
 char* human_data::get_name()&lt;br /&gt;
 {&lt;br /&gt;
 	return names;&lt;br /&gt;
 }&lt;br /&gt;
 int human_data::get_number_line()&lt;br /&gt;
 {&lt;br /&gt;
 	return number_line;&lt;br /&gt;
 }&lt;br /&gt;
 int human_data::get_line_number(int where)&lt;br /&gt;
 {&lt;br /&gt;
 	if (0&amp;amp;lt;=where &amp;amp;amp;&amp;amp;amp; where&amp;amp;lt;number_line)&lt;br /&gt;
 		return line_numbers[where];&lt;br /&gt;
 	return -1;&lt;br /&gt;
 }&lt;br /&gt;
 int human_data::get_tuched()&lt;br /&gt;
 {&lt;br /&gt;
 	return tuched;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 line_data::line_data(human_data* input_data, line_data* input_prv)&lt;br /&gt;
 {&lt;br /&gt;
 	include_data=input_data;&lt;br /&gt;
 	prv=input_prv;&lt;br /&gt;
 	if (NULL!=prv)&lt;br /&gt;
 		prv-&amp;amp;gt;link(this);&lt;br /&gt;
 	next=NULL;&lt;br /&gt;
 }&lt;br /&gt;
 line_data::~line_data()&lt;br /&gt;
 {&lt;br /&gt;
 	if (NULL!=next)&lt;br /&gt;
 		delete next;&lt;br /&gt;
 	if (NULL!=prv)&lt;br /&gt;
 		delete prv;&lt;br /&gt;
 }&lt;br /&gt;
 void line_data::link(line_data* input_next)&lt;br /&gt;
 {&lt;br /&gt;
 	next=input_next;&lt;br /&gt;
 }&lt;br /&gt;
 human_data* line_data::get_data()&lt;br /&gt;
 {&lt;br /&gt;
 	return include_data;&lt;br /&gt;
 }&lt;br /&gt;
 line_data* line_data::get_next()&lt;br /&gt;
 {&lt;br /&gt;
 	return next;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void data_manager::creat_book()&lt;br /&gt;
 {&lt;br /&gt;
 	line_data** temp_books=new line_data*[number_books+1]; &lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;number_books; ++i) &lt;br /&gt;
 		temp_books[i]=books[i]; &lt;br /&gt;
 	temp_books[number_books]=NULL;&lt;br /&gt;
 	if (NULL!=books)&lt;br /&gt;
 		delete books;&lt;br /&gt;
 	books=temp_books;&lt;br /&gt;
 	++number_books; &lt;br /&gt;
 }&lt;br /&gt;
 void data_manager::creat_man(char* input_name)&lt;br /&gt;
 {&lt;br /&gt;
 	human_data** temp_mans=new human_data*[number_mans+1]; &lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;number_mans; ++i) &lt;br /&gt;
 		temp_mans[i]=mans[i]; &lt;br /&gt;
 	temp_mans[number_mans]=new human_data(input_name);&lt;br /&gt;
 	if (NULL!=mans)&lt;br /&gt;
 		delete mans;&lt;br /&gt;
 	mans=temp_mans;&lt;br /&gt;
 	++number_mans; &lt;br /&gt;
 }&lt;br /&gt;
 int data_manager::str_cmp(char* target_a, char* target_b)&lt;br /&gt;
 {&lt;br /&gt;
 	for (register int i=0; 0!=target_b[i] ; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (0==target_a[i])&lt;br /&gt;
 			return -1;&lt;br /&gt;
 		if (target_a[i]!=target_b[i])&lt;br /&gt;
 			return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 int data_manager::such_man(char* target_name)&lt;br /&gt;
 {&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;number_mans; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (0==str_cmp(target_name,mans[i]-&amp;amp;gt;get_name()))&lt;br /&gt;
 			return i;&lt;br /&gt;
 	}&lt;br /&gt;
 	return -1;&lt;br /&gt;
 }&lt;br /&gt;
 void data_manager::str_swallow(char* tagert_line)&lt;br /&gt;
 {&lt;br /&gt;
 	human_data* temp_human;&lt;br /&gt;
 	int temp_man_number=such_man(tagert_line);&lt;br /&gt;
 	if (-1==temp_man_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		creat_man(tagert_line);&lt;br /&gt;
 		temp_human=mans[number_mans-1];&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 		temp_human=mans[temp_man_number];&lt;br /&gt;
 	temp_human-&amp;amp;gt;input_line(number_books-1);&lt;br /&gt;
 &lt;br /&gt;
 	line_data* temp_book=books[number_books-1];&lt;br /&gt;
 	if (NULL==temp_book)&lt;br /&gt;
 	{&lt;br /&gt;
 		books[number_books-1]=new line_data(temp_human,NULL);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		while (NULL!=temp_book-&amp;amp;gt;get_next())&lt;br /&gt;
 			temp_book=temp_book-&amp;amp;gt;get_next();&lt;br /&gt;
 		new line_data(temp_human,temp_book);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 data_manager::data_manager()&lt;br /&gt;
 {&lt;br /&gt;
 	number_mans=0;&lt;br /&gt;
 	number_books=0;&lt;br /&gt;
 	mans=NULL;&lt;br /&gt;
 	books=NULL;&lt;br /&gt;
 }&lt;br /&gt;
 data_manager::~data_manager()&lt;br /&gt;
 {&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;number_books; ++i)&lt;br /&gt;
 		delete books[i];&lt;br /&gt;
 	if (NULL!=books)&lt;br /&gt;
 		delete books;&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;number_mans; ++i)&lt;br /&gt;
 		delete mans[i];		&lt;br /&gt;
 	if (NULL!=mans)&lt;br /&gt;
 		delete mans;&lt;br /&gt;
 }&lt;br /&gt;
 void data_manager::swallow(char* input_line)&lt;br /&gt;
 {&lt;br /&gt;
 	creat_book();&lt;br /&gt;
 	int copy_start=-1,suched=0,such_point=0;&lt;br /&gt;
 	while (0!=input_line[such_point])&lt;br /&gt;
 	{&lt;br /&gt;
 		if (0==suched &amp;amp;amp;&amp;amp;amp; &amp;#039; &amp;#039;!=input_line[such_point])&lt;br /&gt;
 		{&lt;br /&gt;
 			suched=1;&lt;br /&gt;
 			copy_start=such_point;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (&amp;#039;.&amp;#039;==input_line[such_point] &amp;amp;amp;&amp;amp;amp; (&amp;#039;,&amp;#039;==input_line[such_point+1] || &amp;#039;:&amp;#039;==input_line[such_point+1]))&lt;br /&gt;
 		{&lt;br /&gt;
 			suched=0;&lt;br /&gt;
 			++such_point;&lt;br /&gt;
 			input_line[such_point]=0;&lt;br /&gt;
 			str_swallow(&amp;amp;amp;input_line[copy_start]);&lt;br /&gt;
 		}&lt;br /&gt;
 		++such_point;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 void data_manager::process_erdos_number(human_data* target_man)&lt;br /&gt;
 {&lt;br /&gt;
 	int target_number_line=target_man-&amp;amp;gt;get_number_line();&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;target_number_line; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		line_data* temp_book=books[target_man-&amp;amp;gt;get_line_number(i)];&lt;br /&gt;
 		while (NULL!=temp_book)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (temp_book-&amp;amp;gt;get_data()-&amp;amp;gt;get_score()&amp;amp;gt;target_man-&amp;amp;gt;get_score()+1 || 0==temp_book-&amp;amp;gt;get_data()-&amp;amp;gt;get_tuched())&lt;br /&gt;
 			{&lt;br /&gt;
 				temp_book-&amp;amp;gt;get_data()-&amp;amp;gt;change_score(target_man-&amp;amp;gt;get_score()+1);&lt;br /&gt;
 				process_erdos_number(temp_book-&amp;amp;gt;get_data());&lt;br /&gt;
 			}&lt;br /&gt;
 			temp_book=temp_book-&amp;amp;gt;get_next();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 void data_manager::process_erdos_number(char* target_name)&lt;br /&gt;
 {&lt;br /&gt;
 	int target_man_number=such_man(target_name);&lt;br /&gt;
 	if (-1!=target_man_number)&lt;br /&gt;
 	{&lt;br /&gt;
 		mans[target_man_number]-&amp;amp;gt;get_passive();&lt;br /&gt;
 		process_erdos_number(mans[target_man_number]);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 int data_manager::get_score(char* target_name)&lt;br /&gt;
 {&lt;br /&gt;
 	int temp_target_number=such_man(target_name);&lt;br /&gt;
 	if (-1==temp_target_number)&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	return mans[temp_target_number]-&amp;amp;gt;get_score();&lt;br /&gt;
 }&lt;br /&gt;
== 저에게 할말 ==&lt;br /&gt;
----&lt;br /&gt;
[[AOI]] [[ErdosNumbers]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>