알고리즘 * 출력하기 문제 바보세룐 2013. 4. 24. 13:34 /* print like below ----**** ----*** ----** ----* ---* --** -*** **** */ #include <iostream> #include <cstdlib> using namespace std; void print_star(const int N); int main() { const int N = 4; print_star(N); return 0; } /** * N is positive integer */ void print_star(const int N) { if (N <= 0) return; // error const char EMPTY_SPACE = ' '; const char STAR = '*'; char *EMPTY_LINE = new char [N+1]; memset(EMPTY_LINE, EMPTY_SPACE, sizeof(char) * (N+1)); EMPTY_LINE[N] = '\0'; char *STAR_LINE = new char [N+1]; memset(STAR_LINE, STAR, sizeof(char) * (N+1)); STAR_LINE[N] = '\0'; int i; for (i = 0; i < N; i++) { cout << EMPTY_LINE; cout << STAR_LINE << endl;; STAR_LINE[N-i-1] = '\0'; } memset(STAR_LINE, '\0', sizeof(char) * (N+1)); EMPTY_LINE[N-1] = '\0'; STAR_LINE[0] = STAR; for (i = 0; i < N; i++) { cout << EMPTY_LINE; cout << STAR_LINE << endl;; EMPTY_LINE[N-i-2] = '\0'; STAR_LINE[i+1] = STAR; } delete [] EMPTY_LINE; delete [] STAR_LINE; } array 하나도로 가능하다 ㅠㅠ /** * N is positive integer */ void print_star(const int N) { if (N <= 0) return; // error const char EMPTY_SPACE = ' '; const char STAR = '*'; char *line = new char [N*2+1]; memset(line, EMPTY_SPACE, sizeof(char) * N); memset(line+N, STAR, sizeof(char) * N); int i; for (i = 0; i < N; i++) { line[N*2-i] = '\0'; cout << line << endl; } for (i = 0; i < N; i++) { line[N+i] = STAR; cout << (line+1+i) << endl; } delete [] line; }