<?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=VonNeumannAirport%2F%EC%9D%B8%EC%88%98</id>
	<title>VonNeumannAirport/인수 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=VonNeumannAirport%2F%EC%9D%B8%EC%88%98"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=VonNeumannAirport/%EC%9D%B8%EC%88%98&amp;action=history"/>
	<updated>2026-05-14T16:30:46Z</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=VonNeumannAirport/%EC%9D%B8%EC%88%98&amp;diff=40092&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=VonNeumannAirport/%EC%9D%B8%EC%88%98&amp;diff=40092&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:23Z</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;
 // 코드 깔끔히 하는 법이랑 디자인 방법 같은걸 나름대로 생각해보는 연습으로..&lt;br /&gt;
 // 접하는 문제를 모두 OOP적으로 풀어보려 노력하려한다.&lt;br /&gt;
 // 근데 잘 안된다 --; 열심히 하다 보면 되겠지&lt;br /&gt;
 // 끝부분에 소트시키는 부분이 있는데.. 귀찮아서 그냥 map에 때려넣었다. map&amp;amp;lt;int,int&amp;amp;gt; 해서 키값은 traffic양, 값은 테스트번호, 이런식으로 하면 지가 알아서 정렬한다.&lt;br /&gt;
 // 뭔가 좀 이상하긴 하지만--;&lt;br /&gt;
 &lt;br /&gt;
 //Traffic은 거의 데이타 저장고(data holder)의 역할을 하고 있네요. C의 struct처럼 말이죠.&lt;br /&gt;
 //만약 지능(intelligence)를 좀 더 분배하거나, 책임(responsibility)을 더 줄 수 없다면&lt;br /&gt;
 //제거해 버리는 것이 좋지 않을까 합니다. --JuNe&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;fstream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;vector&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cmath&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;map&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 class Traffic;&lt;br /&gt;
 class Airport;&lt;br /&gt;
 class Admin;&lt;br /&gt;
 &lt;br /&gt;
 class Traffic&lt;br /&gt;
 {&lt;br /&gt;
 private :&lt;br /&gt;
 	int _departureGateNum;&lt;br /&gt;
 	int _arrivalGateNum;&lt;br /&gt;
 	int _passengerNum;&lt;br /&gt;
 &lt;br /&gt;
 public :&lt;br /&gt;
 	Traffic(int departureGateNum, int arrivalGateNum, int passengerNum) &lt;br /&gt;
 		: _departureGateNum(departureGateNum), _arrivalGateNum(arrivalGateNum), _passengerNum(passengerNum) {}&lt;br /&gt;
 &lt;br /&gt;
 	int getPassengerNum() const&lt;br /&gt;
 	{&lt;br /&gt;
 		return _passengerNum;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int getDepartureGateNum() const&lt;br /&gt;
 	{&lt;br /&gt;
 		return _departureGateNum;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int getArrivalGateNum() const&lt;br /&gt;
 	{&lt;br /&gt;
 		return _arrivalGateNum;&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Airport&lt;br /&gt;
 {&lt;br /&gt;
 private:&lt;br /&gt;
 	enum { DISTANCE = 1 };&lt;br /&gt;
 	vector&amp;amp;lt;Traffic&amp;amp;gt; _traffics;&lt;br /&gt;
 	vector&amp;amp;lt;int&amp;amp;gt; _arrivalGateNums;&lt;br /&gt;
 	vector&amp;amp;lt;int&amp;amp;gt; _departureGateNums;&lt;br /&gt;
 	int _totalTraffic;&lt;br /&gt;
 	int _numCity;&lt;br /&gt;
 &lt;br /&gt;
 public :&lt;br /&gt;
 	Airport(int numCity) : _numCity(numCity)&lt;br /&gt;
 	{&lt;br /&gt;
 		_arrivalGateNums.resize(_numCity);&lt;br /&gt;
 		_departureGateNums.resize(_numCity);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void addTrafficData(const Traffic&amp;amp;amp; traffic)&lt;br /&gt;
 	{&lt;br /&gt;
 		_traffics.push_back(traffic);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int getTrafficAmount(const Traffic&amp;amp;amp; traffic) const&lt;br /&gt;
 	{&lt;br /&gt;
 		return traffic.getPassengerNum();&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void eraseGateOrder() &lt;br /&gt;
 	{&lt;br /&gt;
 		_arrivalGateNums.clear();&lt;br /&gt;
 		_departureGateNums.clear();&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int getDistance(const Traffic&amp;amp;amp; traffic) const&lt;br /&gt;
 	{&lt;br /&gt;
 		int ar, dp;&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; _departureGateNums.size(); ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			if( _departureGateNums[i] == traffic.getDepartureGateNum() )&lt;br /&gt;
 			{&lt;br /&gt;
 				dp = i;&lt;br /&gt;
 				for(int j = 0 ; j &amp;amp;lt; _arrivalGateNums.size(); ++j)&lt;br /&gt;
 				{&lt;br /&gt;
 					if( _arrivalGateNums[j] == traffic.getArrivalGateNum() )&lt;br /&gt;
 					{				&lt;br /&gt;
 						ar = j;&lt;br /&gt;
 						break;&lt;br /&gt;
 					}&lt;br /&gt;
 				}&lt;br /&gt;
 				break;		&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		return DISTANCE + abs(ar-dp) * DISTANCE;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int getTotalTraffic()&lt;br /&gt;
 	{&lt;br /&gt;
 		int total = 0;&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; _traffics.size() ; ++i)&lt;br /&gt;
 			total += getDistance(_traffics[i]) * getTrafficAmount(_traffics[i]);&lt;br /&gt;
 		_totalTraffic = total;&lt;br /&gt;
 		return _totalTraffic;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void addArrivalGate(int num)&lt;br /&gt;
 	{&lt;br /&gt;
 		_arrivalGateNums.push_back(num);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void addDepartureGate(int num)&lt;br /&gt;
 	{&lt;br /&gt;
 		_departureGateNums.push_back(num);&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Admin&lt;br /&gt;
 {&lt;br /&gt;
 private :&lt;br /&gt;
 	map&amp;amp;lt;int, int&amp;amp;gt; _trafficAmountCollection;&lt;br /&gt;
 public :&lt;br /&gt;
 	Admin()&lt;br /&gt;
 	{&lt;br /&gt;
 		runProcess();&lt;br /&gt;
 	}&lt;br /&gt;
 	void runProcess()&lt;br /&gt;
 	{&lt;br /&gt;
 		ifstream fin(&amp;quot;airport.in&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 		while(1)&lt;br /&gt;
 		{&lt;br /&gt;
 			int numCity;&lt;br /&gt;
 			fin &amp;amp;gt;&amp;amp;gt; numCity;&lt;br /&gt;
 			if(!numCity)&lt;br /&gt;
 				break;&lt;br /&gt;
 &lt;br /&gt;
 			Airport airport(numCity);&lt;br /&gt;
 &lt;br /&gt;
 			int departureNum, iterateNum, arrivalNum, trafficAmount;&lt;br /&gt;
 			for(int i = 0 ; i &amp;amp;lt; numCity ; ++i)&lt;br /&gt;
 			{&lt;br /&gt;
 				fin &amp;amp;gt;&amp;amp;gt; departureNum;&lt;br /&gt;
 				fin &amp;amp;gt;&amp;amp;gt; iterateNum;&lt;br /&gt;
 &lt;br /&gt;
 				for(int j = 0 ; j &amp;amp;lt; iterateNum ; ++j)&lt;br /&gt;
 				{&lt;br /&gt;
 					fin &amp;amp;gt;&amp;amp;gt; arrivalNum;&lt;br /&gt;
 					fin &amp;amp;gt;&amp;amp;gt; trafficAmount;&lt;br /&gt;
 					&lt;br /&gt;
 					Traffic traffic(arrivalNum, departureNum, trafficAmount);					&lt;br /&gt;
 					airport.addTrafficData(traffic);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 &lt;br /&gt;
 			int testCaseNum, gateNum, testCount = 0;&lt;br /&gt;
 			&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;ConfigurationtLoad&amp;quot; &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 			while(1)&lt;br /&gt;
 			{&lt;br /&gt;
 				fin &amp;amp;gt;&amp;amp;gt; testCaseNum;&lt;br /&gt;
 &lt;br /&gt;
 				if(!testCaseNum)&lt;br /&gt;
 					break;&lt;br /&gt;
 				for(int i = 0 ; i &amp;amp;lt; numCity ; ++i)&lt;br /&gt;
 				{&lt;br /&gt;
 					fin &amp;amp;gt;&amp;amp;gt; gateNum;			&lt;br /&gt;
 					airport.addArrivalGate(gateNum);&lt;br /&gt;
 				}&lt;br /&gt;
 &lt;br /&gt;
 				for(int i = 0 ; i &amp;amp;lt; numCity ; ++i)&lt;br /&gt;
 				{&lt;br /&gt;
 					fin &amp;amp;gt;&amp;amp;gt; gateNum;			&lt;br /&gt;
 					airport.addDepartureGate(gateNum);&lt;br /&gt;
 				}&lt;br /&gt;
 &lt;br /&gt;
 				_trafficAmountCollection[airport.getTotalTraffic()] = testCaseNum;&lt;br /&gt;
 				++testCount;&lt;br /&gt;
 &lt;br /&gt;
 				airport.eraseGateOrder();&lt;br /&gt;
 			}&lt;br /&gt;
 						&lt;br /&gt;
 			showTrafficAmount();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	void showTrafficAmount()&lt;br /&gt;
 	{&lt;br /&gt;
 		for(map&amp;amp;lt;int, int&amp;amp;gt;::iterator j = _trafficAmountCollection.begin() ; j != _trafficAmountCollection.end() ; ++j)&lt;br /&gt;
 		{&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;t&amp;quot; &amp;amp;lt;&amp;amp;lt; j-&amp;amp;gt;second &amp;amp;lt;&amp;amp;lt; &amp;quot;t&amp;quot; &amp;amp;lt;&amp;amp;lt; j-&amp;amp;gt;first &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		_trafficAmountCollection.clear();&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	Admin gogo;&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>