반응형
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++;
}
}
}
반응형
'PS 문제 풀이 > Jungol' 카테고리의 다른 글
[Jungol] 정올 1141 불쾌한 날(Bad Hair Day) (0) | 2021.03.15 |
---|---|
[Jungol] 정올 1523 별삼각형1 (0) | 2021.03.14 |
[Jungol] 정올 1885 접두사 (0) | 2021.03.14 |
[Jungol] 정올 1697 큐(Queue) (0) | 2021.03.14 |
[Jungol] 정올 2514 문자열 찾기 (0) | 2021.03.14 |
댓글