반응형
출처: https://www.acmicpc.net/problem/10992
Input
4
Output
*
* *
* *
*******
▶ [n = 1]
* 한 개 출력.
▶ [n > 1]
- 크게 첫번째 줄 / 중간 구역 / 마지막 줄로 구분합니다.
- 각 줄의 끝 별을 각각 left, right로 정의
(첫번째 줄은 left = right = n-1)
① 첫번째 줄:
▷ left 이전까지는 공백 출력하고 * 한개 출력
② 중간 구역:
▷ left 이전까지는 공백 출력 후, 별 한개 출력
▷ left 와 right 사이에 공백 출력 후 별 한개 출력
③ 마지막 줄:
▷ left 부터 right 까지 별 출력
(※ 입력 받은 n = 2인 경우에는 첫번째 줄과 마지막줄만 존재.)
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
int main(void) {
int n;
cin >> n;
int left = n - 1, right = n - 1;
// 첫번째 줄
for (int i = 0; i < left; i++) {
printf(" ");
}
printf("*\n");
left--; right++;
// 중간 구역
for (int i = 1; i < n-1; ++i) {
for (int j = 0; j < left; ++j) {
printf(" ");
}
printf("*");
for (int j = left+1; j < right; ++j) {
printf(" ");
}
printf("*\n");
left--; right++;
}
if (n > 1) {
// 마지막 줄
for (int i = left; i <= right; ++i) {
printf("*");
}
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1551 수열의 변화 (0) | 2021.02.26 |
---|---|
[BOJ] 백준 10991 별 찍기 - 16 (0) | 2021.02.26 |
[BOJ] 백준 10995 별 찍기 - 20 (0) | 2021.02.26 |
[BOJ] 백준 10996 별 찍기 - 21 (0) | 2021.02.26 |
[BOJ] 백준 10993 별 찍기 - 18 (0) | 2021.02.26 |
댓글