Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main() {
- int size = 0;
- int space = 0;
- int star = 1;
- int isUp = 1;
- int line = 0;
- //단순화를 위해 짝수에서만 사용.
- int lineSize = 0;
- printf("양의 정수를 입력하세요. ");
- scanf("%d", &size);
- if (size % 2 == 1) {
- //홀수진입
- space = (size + 3) / 2;
- while(1) {
- for (int i = 0; i < space; i++) {
- printf(" ");
- }
- for (int i = 0; i < star; i++) {
- printf("*");
- }
- for (int i = 0; i < space; i++) {
- printf(" ");
- }
- printf("\n");
- if (star == size) {
- isUp = 0;
- }
- if (isUp) {
- //상단부
- space--;
- star += 2;
- }
- else {
- //하단부
- space++;
- star -= 2;
- }
- if (star <= 0) {
- break;
- }
- }
- }
- else {
- //짝수진입
- //1번째 라인 배제
- lineSize = size + 4;
- space = size / 2 + 2;
- for (int i = 0; i < space; i++) {
- printf(" ");
- }
- for (int i = 0; i < star; i++) {
- printf("*");
- }
- for (int i = 0; i < (lineSize - space - star); i++) {
- printf(" ");
- }
- printf("\n");
- star++;
- space--;
- while(1) {
- for (int i = 0; i < space; i++) {
- printf(" ");
- }
- for (int i = 0; i < star; i++) {
- printf("*");
- }
- for (int i = 0; i < (lineSize - space - star); i++) {
- printf(" ");
- }
- printf("\n");
- if (star == size) {
- isUp = 0;
- }
- if (isUp) {
- //상단부
- space--;
- star += 2;
- } else {
- //하단부
- if (star == 2) {
- break;
- }
- space++;
- star -= 2;
- }
- }
- //마지막 줄 예외
- star--;
- for (int i = 0; i < space; i++) {
- printf(" ");
- }
- for (int i = 0; i < star; i++) {
- printf("*");
- }
- for (int i = 0; i < (lineSize - space - star); i++) {
- printf(" ");
- }
- printf("\n");
- }
- return 0;
- }
- /*
- n=8
- ______*_____ 6/1/5
- _____**_____ 5/2/5
- ____****____ 4/4/4
- ___******___ 3/6/3
- __********__ 2/8/2
- ___******___ 3/6/3
- ____****____ 4/4/4
- _____**_____ 5/2/5
- _____*______ 5/1/6
- n=7
- _____*_____ 5/1/5
- ____***____ 4/3/4
- ___*****___ 3/5/3
- __*******__ 2/7/2
- ___*****___ 3/5/3
- ____***____ 4/3/4
- _____*_____ 5/1/5
- n=6
- _____*____ 5/1/4
- ____**____ 4/2/4
- ___****___ 3/4/3
- __******__ 2/6/2
- ___****___ 3/4/3
- ____**____ 4/2/4
- ____*_____ 4/1/5
- n=5
- ____*____ 4/1/4
- ___***___ 3/3/3
- __*****__ 2/5/2
- ___***___ 3/3/3
- ____*____ 4/1/4
- n=4
- ____*___ 4/1/3
- ___**___ 3/2/3
- __****__ 2/4/2
- ___**___ 3/2/3
- ___*____ 3/1/4
- n=3
- ___*___ 3/1/3
- __***__ 2/3/2
- ___*___ 3/1/3
- n=2
- ___*___ 3/1/3
- __**___ 2/2/3
- __*____ 2/1/4
- _________________________________
- n=1
- __*__ 2/1/2
- 모두 메인 위치에선
- 2/n/2를 취함
- 즉 최대값은 n+4
- n이 홀수:
- 메인 계산 : (메인 + 1) / 2
- (n+3) / 2 / 1 / (n+3) / 2
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement