아�디어랄까.
첫번째와 ë‘�번째는 너무 쉽다. 버í�¼ë§Œ 만들면 거기ì—� 별표만 채우면 ë�˜ë‹ˆê¹Œ. ì˜¤ížˆë ¤ makeBuffer 함수가 ì‹ ê²½ì�¨ì•¼ í• ë¶€ë¶„. C ì—�서는 문ìž�ì—´ì�˜ ë��ì�„ ì‹ ê²½ì�¨ì¤˜ì•¼ 하니까.
세번째가 ê²°êµ ë¬¸ì œì�¸ë�°, 무슨 수열 ìƒ�ê°�í• ê±° ì—†ì�´ ê·¸ì € ì§�ê´€ì �으로 recursive로 필요한 버í�¼ì�˜ ì–‘ì�„ 구현. ì�´ê±´ 별표 ì°�는 시작 위치 ì •í• ë•Œë�„ 쓸수 있ë�”구만. ê·¸ì € ì†� 가는대로 프로그래ë°� í–ˆì�„ ë¿�.
다만 ê±±ì •ë�˜ëŠ”ê²Œ 있었다면, visual studio ë�„우기ë�„ 귀찮아서.. ê·¸ë¦¬ê³ ìš”ì¦˜ì—�는 ì�´ëŸ°ê±° 짜는ë�° 마소 비주얼 스튜디오 형님까지 ë�Œì–´ë“¤ì�´ëŠ”ê±´ 좀 미안하게 ëŠ�ê»´ì ¸ì„œ 그냥 zp server ì—�서 vi 로 ë‘�들겼는ë�°.. 나 gdb 쓸 줄 모르니까. malloc 쓰면서 약간 ë‘�ë ¤ì› ì§€. í��í��í��. 다행ì�´ const int 를 case ì—�서 ë°›ì�„ 수 없는거 (ì�´ëŸ° 줄 오늘 알았다) ë§�ê³ ëŠ” 별달리 ì—�러 ì—†ì�´ 한방ì—� ë�˜ì£¼ì…”서 ì¦�ê±°ì› ì§€.
시험ë�„ ë��났으니 ì�´ëŸ°ê±°ë‚˜ 하면서 놀면 ìž¬ë°Œê² ë‹¤. 다른 ë¬¸ì œ 없나...
ì•„ 요즘 왜ì�´ë¦¬ ì‹¬ì‹¬í• ê¹Œ..
í† ì�´ í† ì�´/삼ê°�형만들기
#include <stdio.h>
#include <stdlib.h>
#define FORWARD 1
#define BACKWARD 2
#define BIDIR 3
void getUserInput(int * sel, int * num) {
scanf("%d %d", sel, num);
}
char * makeBuffer(int num) {
char * ret = (char *)malloc(sizeof(char) * num + 1);
ret[num--] = '\0';
while (num >= 0)
ret[num--] = ' ';
return ret;
}
void forwardTriangle(int num, char * buffer) {
int i;
for (i = 0; i < num; i++) {
buffer[i] = '*';
printf("%s\n", buffer);
}
}
void backwardTriangle(int num, char * buffer) {
int i;
for (i = num - 1; i >= 0; i--) {
buffer[i] = '*';
printf("%s\n", buffer);
}
}
int calcBidirTriangleSize(int num) {
if (num == 1)
return 1;
return calcBidirTriangleSize(num - 1) + 2;
}
void bidirTriangle(int num, char * buffer) {
int i, center;
center = calcBidirTriangleSize(num) / 2;
for (i = 0; i < num; i++) {
buffer[center + i] = '*';
buffer[center - i] = '*';
printf("%s\n", buffer);
}
}
void produceTriangle(int sel, int num) {
char * buffer;
switch (sel) {
case FORWARD:
buffer = makeBuffer(num);
forwardTriangle(num, buffer);
break;
case BACKWARD:
buffer = makeBuffer(num);
backwardTriangle(num, buffer);
break;
case BIDIR:
buffer = makeBuffer( calcBidirTriangleSize(num) );
bidirTriangle(num, buffer);
}
free(buffer);
}
int main(void) {
int sel, num;
getUserInput(&sel, &num);
produceTriangle(sel, num);
return 0;
}










