2023년 2월 20일에 작성됨
https://www.acmicpc.net/problem/2444
2444번: 별 찍기 - 7
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
문제 분석
for문을 이용하여 예제 출력처럼 별을 출력한다.
소스 코드 (⭕)
#include <stdio.h>
int main()
{
int n, cnt = 1;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = n - i - 1; j > 0; j--)
{
printf(" ");
}
for (int k = 0; k < 2 * cnt - 1; k++)
{
printf("*");
}
cnt++;
printf("\n");
}
cnt = n;
for (int a = 0; a < n - 1; a++)
{
for (int b = 0; b < a + 1; b++)
{
printf(" ");
}
for (int c = 2 * cnt - 3; c > 0; c--)
{
printf("*");
}
cnt--;
printf("\n");
}
}
코드 분석
1. n을 입력받고, 출력에서 마름모를 가로로 자른 윗부분인 큰 삼각형 모양을 먼저 출력하기 위해 i=0부터 n번 반복하는 반복문을 생성한다.
1-1. 공백은 n-1개, n-2개, ... 각 줄마다 1씩 줄어들게 출력하기 위해 n-i-1번을 반복해준다.
1-2. 별은 1개, 3개, ..., 2*n-1개까지 2씩 증가하도록 출력하기 위해 cnt=1부터 반복마다 1씩 증가하도록 해주고 줄바꿈을 해준다.
2. 이제 밑부분인 작은 역삼각형 모양을 출력하기 위해 먼저 n-1번을 반복해주는 반복문을 생성해준다.
2-1. 공백을 1개, 2개, ..., n-1개씩 출력하기 위해 b=0부터 a+1번을 반복해준다.
2-2. 별을 2*n-3개, 2*(n-1)-3개, ..., 1개까지 2씩 줄어들게 출력하기 위해 c=2*cnt-3에서 반복마다 cnt를 -1씩 해주고 줄바꿈을 해준다.
end
삼각형과 역삼각형 출력하기를 섞은 문제였다. 아직까진 혼자 풀 만한데 다음 별 찍기는 어떤 모양일까..?!
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[C]백준_2445 : 별 찍기 - 8 (0) | 2023.12.22 |
---|---|
[C]백준_1789 : 수들의 합 (2) | 2023.12.21 |
[C]백준_1264 : 모음의 개수 (2) | 2023.12.20 |
[C]백준_2798 : 블랙잭 (1) | 2023.12.19 |
[C]백준_2443 : 별 찍기 - 6 (0) | 2023.12.19 |