본문 바로가기

알고리즘

C언어 - 백준 2446 별 찍기 - 9

728x90

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

https://www.acmicpc.net/problem/2446 -> 여기서 예제를 확인하세요.

★소스코드★

#include <stdio.h>

int main() {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N + N - 1; j++) {
if (i - j > 0)
printf(" ");
else if (i + j < N + N - 1)
printf("*");
else
break;
}
if (N != 1)
printf("\n");
}
for (int i = N - 1; i > 0; i--) {
for (int j = 0; j < N + N - 1; j++) {
if (i - j > 1)
printf(" ");
else if (i + j <= N + N - 1)
printf("*");
else
break;
}
if (i != 1)
printf("\n");
}
}

★정리★

이 문제의 관건은 공백을 넣는 것이라고 생각한다. 주의할 점은 앞 부분에는 공백이 있지만 뒷부분에는 공백이

없다는 것이다. 반복문을 이용해 별을 찍어 주었는데 규칙에 맞게 공백을 넣기 위해 조건문을 이용하였다. 입력받은

N 만큼 반복해 주는 반복문 안에 별의 개수가 줄어드는 부분의 반복문 그리고 다시 별의 개수가 늘어나는 반복문을

사용하여 예제에 맞게 별을 출력하는 프로그램이다.

728x90

'알고리즘' 카테고리의 다른 글

C언어 - 백준 2292 벌집  (0) 2020.03.25
C언어 - 백준 10996 별 찍기 - 21  (1) 2020.03.21
C언어 - 백준 2523 별 찍기 - 13  (0) 2020.03.20
C언어 - 백준 10039 평균 점수  (0) 2020.03.20
C언어 - 백준 2884 알람 시계  (0) 2020.03.19