본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 1719 별삼각형2

by 까망 하르방 2021. 3. 14.
반응형

출처[Jungol] 1719 별삼각형

Approach

① 입력된 데이터의 범위를 먼저 확인합니다. (N과 M의 범위)

    

    

② 별 모양을 그릴 때, 각 줄마다 양 끝(left, right) 변수를 지정해서 해당 범위에 별(*) 출력

    종류 2, 3, 4의 경우 (각 줄에) 별이 없는 앞쪽은 공백이며, 뒷쪽은 공백이 없음


#include <stdio.h>
 
int N, M;
int main() {
    // freopen("input.txt", "r", stdin);
    scanf("%d %d", &N, &M);
    if (N <= 0 || N > 100 || M <= 0 ||M > 4 || N % 2 == 0) {
        printf("INPUT ERROR!\n");
        return 0;
    }
 
    int left, right;
    if (M == 1) {
        left = 1, right = 1;
        for (int i = 1; i <= N; ++i) {
            for (int j = left; j <= right; ++j) {
                printf("*");
            }
            printf("\n");
            if (i < N / 2 + 1) right++;
            else right--;
        }
    }
    else if (M == 2) {
        left = N / 2 + 1, right = N / 2 + 1;
        for (int i = 1; i <= N; ++i) {
            for (int j = 1; j < left; ++j) {
                printf(" ");
            }
 
            for (int j = right; j >= left; --j) {
                printf("*");
            }
            printf("\n");
            if (i < N / 2 + 1) left--;
            else left++;
        }
    }
    else if(M == 3){
        left = 1, right = N;
        for (int i = 1; i <= N; ++i) {
            for (int j = 1; j < left; ++j) {
                printf(" ");
            }
 
            for (int j = left; j <= right; ++j) {
                printf("*");
            }
            printf("\n");
            if (i < N / 2 + 1)  left++, right-- ;
            else left--, right++;
        }
    }
    else if (M == 4) {
        left = 1, right = N / 2 + 1;
        for (int i = 1; i <= N; ++i) {
            for (int j = 1; j < left; ++j) {
                printf(" ");
            }
            for (int j = left; j <= right; ++j) {
                printf("*");
            }
            printf("\n");
            if (i < N / 2 + 1) left++;
            else right++;
        }
    }
}

 

반응형

댓글