<?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=%ED%86%A0%EC%9D%B4%2F%EC%82%BC%EA%B0%81%ED%98%95%EB%A7%8C%EB%93%A4%EA%B8%B0%2F%EA%B9%80%EB%82%A8%ED%9B%88</id>
	<title>토이/삼각형만들기/김남훈 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%ED%86%A0%EC%9D%B4%2F%EC%82%BC%EA%B0%81%ED%98%95%EB%A7%8C%EB%93%A4%EA%B8%B0%2F%EA%B9%80%EB%82%A8%ED%9B%88"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%ED%86%A0%EC%9D%B4/%EC%82%BC%EA%B0%81%ED%98%95%EB%A7%8C%EB%93%A4%EA%B8%B0/%EA%B9%80%EB%82%A8%ED%9B%88&amp;action=history"/>
	<updated>2026-05-15T14:18:15Z</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=%ED%86%A0%EC%9D%B4/%EC%82%BC%EA%B0%81%ED%98%95%EB%A7%8C%EB%93%A4%EA%B8%B0/%EA%B9%80%EB%82%A8%ED%9B%88&amp;diff=76496&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:31, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%ED%86%A0%EC%9D%B4/%EC%82%BC%EA%B0%81%ED%98%95%EB%A7%8C%EB%93%A4%EA%B8%B0/%EA%B9%80%EB%82%A8%ED%9B%88&amp;diff=76496&amp;oldid=prev"/>
		<updated>2021-02-07T05:31:21Z</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;
첫번째와 두번째는 너무 쉽다. 버퍼만 만들면 거기에 별표만 채우면 되니까. 오히려 makeBuffer 함수가 신경써야 할 부분. C 에서는 문자열의 끝을 신경써줘야 하니까.&lt;br /&gt;
&lt;br /&gt;
세번째가 결국 문제인데, 무슨 수열 생각할 거 없이 그저 직관적으로 recursive로 필요한 버퍼의 양을 구현. 이건 별표 찍는 시작 위치 정할때도 쓸수 있더구만. 그저 손 가는대로 프로그래밍 했을 뿐.&lt;br /&gt;
&lt;br /&gt;
다만 걱정되는게 있었다면, visual studio 띄우기도 귀찮아서.. 그리고 요즘에는 이런거 짜는데 마소 비주얼 스튜디오 형님까지 끌어들이는건 좀 미안하게 느껴져서 그냥 zp server 에서 vi 로 두들겼는데.. 나 gdb 쓸 줄 모르니까. malloc 쓰면서 약간 두려웠지. 흐흐흐. 다행이 const int 를 case 에서 받을 수 없는거 (이런 줄 오늘 알았다) 말고는 별달리 에러 없이 한방에 되주셔서 즐거웠지.&lt;br /&gt;
&lt;br /&gt;
시험도 끝났으니 이런거나 하면서 놀면 재밌겠다. 다른 문제 없나...&lt;br /&gt;
&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;stdlib.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define FORWARD 1&lt;br /&gt;
 #define BACKWARD 2&lt;br /&gt;
 #define BIDIR 3&lt;br /&gt;
 &lt;br /&gt;
 void getUserInput(int * sel, int * num) {&lt;br /&gt;
         scanf(&amp;quot;%d %d&amp;quot;, sel, num);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 char * makeBuffer(int num) {&lt;br /&gt;
         char * ret = (char *)malloc(sizeof(char) * num + 1);&lt;br /&gt;
 &lt;br /&gt;
         ret[num--] = &amp;#039;\0&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
         while (num &amp;amp;gt;= 0)&lt;br /&gt;
                 ret[num--] = &amp;#039; &amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
         return ret;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void forwardTriangle(int num, char * buffer) {&lt;br /&gt;
         int i;&lt;br /&gt;
 &lt;br /&gt;
         for (i = 0; i &amp;amp;lt; num; i++) {&lt;br /&gt;
                 buffer[i] = &amp;#039;*&amp;#039;;&lt;br /&gt;
                 printf(&amp;quot;%s\n&amp;quot;, buffer);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void backwardTriangle(int num, char * buffer) {&lt;br /&gt;
         int i;&lt;br /&gt;
 &lt;br /&gt;
         for (i = num - 1; i &amp;amp;gt;= 0; i--) {&lt;br /&gt;
                 buffer[i] = &amp;#039;*&amp;#039;;&lt;br /&gt;
                 printf(&amp;quot;%s\n&amp;quot;, buffer);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int calcBidirTriangleSize(int num) {&lt;br /&gt;
         if (num == 1)&lt;br /&gt;
                 return 1;&lt;br /&gt;
 &lt;br /&gt;
         return calcBidirTriangleSize(num - 1) + 2;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void bidirTriangle(int num, char * buffer) {&lt;br /&gt;
         int i, center;&lt;br /&gt;
         center = calcBidirTriangleSize(num) / 2;&lt;br /&gt;
 &lt;br /&gt;
         for (i = 0; i &amp;amp;lt; num; i++) {&lt;br /&gt;
                 buffer[center + i] = &amp;#039;*&amp;#039;;&lt;br /&gt;
                 buffer[center - i] = &amp;#039;*&amp;#039;;&lt;br /&gt;
                 printf(&amp;quot;%s\n&amp;quot;, buffer);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void produceTriangle(int sel, int num) {&lt;br /&gt;
         char * buffer;&lt;br /&gt;
 &lt;br /&gt;
         switch (sel) {&lt;br /&gt;
         case FORWARD:&lt;br /&gt;
                 buffer = makeBuffer(num);&lt;br /&gt;
                 forwardTriangle(num, buffer);&lt;br /&gt;
                 break;&lt;br /&gt;
         case BACKWARD:&lt;br /&gt;
                 buffer = makeBuffer(num);&lt;br /&gt;
                 backwardTriangle(num, buffer);&lt;br /&gt;
                 break;&lt;br /&gt;
         case BIDIR:&lt;br /&gt;
                 buffer = makeBuffer( calcBidirTriangleSize(num) );&lt;br /&gt;
                 bidirTriangle(num, buffer);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         free(buffer);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main(void) {&lt;br /&gt;
         int sel, num;&lt;br /&gt;
 &lt;br /&gt;
         getUserInput(&amp;amp;amp;sel, &amp;amp;amp;num);&lt;br /&gt;
         produceTriangle(sel, num);&lt;br /&gt;
 &lt;br /&gt;
         return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
아 요즘 왜이리 심심할까..&lt;br /&gt;
&lt;br /&gt;
[[토이]] [[토이/삼각형만들기]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>