<?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=StacksOfFlapjacks%2F%EC%9D%B4%EB%8F%99%ED%98%84</id>
	<title>StacksOfFlapjacks/이동현 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=StacksOfFlapjacks%2F%EC%9D%B4%EB%8F%99%ED%98%84"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=StacksOfFlapjacks/%EC%9D%B4%EB%8F%99%ED%98%84&amp;action=history"/>
	<updated>2026-05-14T15:44:54Z</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=StacksOfFlapjacks/%EC%9D%B4%EB%8F%99%ED%98%84&amp;diff=39448&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=StacksOfFlapjacks/%EC%9D%B4%EB%8F%99%ED%98%84&amp;diff=39448&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:06Z</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;[[StacksOfFlapjacks]]&lt;br /&gt;
== 소감 ==&lt;br /&gt;
간단할듯 하여 도전했는데 역시;; &lt;br /&gt;
해법은 일단 0~n 까지 케익 중 가장 큰 케익 바로뒤에 주걱을 꼽고 한번 뒤집어 가장 큰 케익을 맨 위에 오게한 후 다시 flip(1)로 뒤집어 가장 큰 케익이 맨 아래 n에 오게한다.&lt;br /&gt;
그 다음엔 0~n-1 까지 케익을 가지고 동일한 동작을 반복하고.. 이렇게 최고 n번정도만 하면 팬케익이 작은것부터 큰것까지 정렬된다. &lt;br /&gt;
&lt;br /&gt;
시간 대부분을 입력받는것 짜는데 매달렸으나 아직도 입력부분을 문제에서 요구한대로 완성하지 못했다.&lt;br /&gt;
여러줄 입력받는걸 만들기 힘들어 일단 그냥 한줄 입력받고 결과출력 하는 식으로 했다.&lt;br /&gt;
&lt;br /&gt;
== 코드 ==&lt;br /&gt;
&lt;br /&gt;
 //Stacks Of Flapjacks:2005.04.15 이동현&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 class StacksOfFlapjacks{&lt;br /&gt;
 private:&lt;br /&gt;
 	int* cake;	//케이크들&lt;br /&gt;
 	int arr_size;	//케익 개수&lt;br /&gt;
 	void flip(int n){	//n번에다가 주걱 넣고 뒤집어!&lt;br /&gt;
 		int k = (arr_size-n+1)/2;&lt;br /&gt;
 		for(int i=0; i&amp;amp;lt;k; i++){&lt;br /&gt;
 			swap(cake[i],cake[arr_size-n-i]);&lt;br /&gt;
 		}&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; n &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
 	}&lt;br /&gt;
 	int searchBigIndex(int end){	//0~end index까지 검사하여 가장 큰 수의 index리턴.&lt;br /&gt;
 		int big_index=0;&lt;br /&gt;
 		for(int i=1;i&amp;amp;lt;=end;i++){&lt;br /&gt;
 			if(cake[big_index]&amp;amp;lt;cake[i])&lt;br /&gt;
 				big_index = i;&lt;br /&gt;
 		}&lt;br /&gt;
 		return big_index;&lt;br /&gt;
 	}&lt;br /&gt;
 	bool isEnd(){	//모든숫자가 정렬되었는지 확인.&lt;br /&gt;
 		for(int i=1;i&amp;amp;lt;arr_size;i++){&lt;br /&gt;
 			if(cake[i-1]&amp;amp;gt;cake[i])&lt;br /&gt;
 				return false;&lt;br /&gt;
 		}&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;0\n&amp;quot;;	//모든케익이 정렬되었으므로 더이상 뒤집을게없다는 0출력&lt;br /&gt;
 		return true;&lt;br /&gt;
 	}&lt;br /&gt;
 public:&lt;br /&gt;
 	void run(int*arr, int size){	&lt;br /&gt;
 		cake = arr;&lt;br /&gt;
 		arr_size = size;&lt;br /&gt;
 		for(int j=arr_size-1, n=1;j&amp;amp;gt;=0;j--, n++){	&lt;br /&gt;
 			if(isEnd()==true)&lt;br /&gt;
 				break;&lt;br /&gt;
 			if(searchBigIndex(j)==j)	//제일 큰 케익이 놓일자리에 이미 놓여있다면 다음뒤집기로.&lt;br /&gt;
 				continue;		&lt;br /&gt;
 			if(searchBigIndex(j)!=0)	//맨위에 제일큰케익이 있으면 뒤집을 필요가 없다.&lt;br /&gt;
 				flip(arr_size-searchBigIndex(j));&lt;br /&gt;
 			flip(n);			&lt;br /&gt;
 		}		&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int main(void){	&lt;br /&gt;
 	StacksOfFlapjacks sof;&lt;br /&gt;
 	int arr[30],j=0;	&lt;br /&gt;
 	while(cin &amp;amp;gt;&amp;amp;gt; arr[j]){	//입력의 끝은 ^Z(EOF)를 흉내내서 종료.				&lt;br /&gt;
 		j++;&lt;br /&gt;
                   if(j&amp;amp;gt;30) break;&lt;br /&gt;
 	}&lt;br /&gt;
 	for(int i=0;i&amp;amp;lt;j;i++)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; arr[i] &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
 	sof.run(arr,j);		&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;j;i++)&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; arr[i] &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot;;	&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>