c c++ 언어 공부

백준 2523번 : 별 찍기 - 13 (C 언어)

Code C 2023. 10. 30. 12:00

https://www.acmicpc.net/problem/2523

 

2523번: 별 찍기 - 13

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

www.acmicpc.net

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
 
int main() {
    int n;
    scanf("%d"&n);
    int cnt = 2 * n - 1;
    int a = 1;
    int flag = 0;
    while (cnt--)
    {
        for (int i = 1; i <= a; i++)
        {
            printf("*");
        }
        if (a == n)
        {
            flag = 1;
        }
        if (flag == 0)
        {
            a++;
        }
        else
        {
            a--;
        }
        if (cnt != 0)
        {
            printf("\n");
        }
    }
}
cs

문제 설명:

오늘 우리는 N(1 ≤ N ≤ 100)에 대한 규칙적인 별 패턴을 출력하는 문제를 해결할 것입니다. 주어진 N에 따라 1부터 N까지의 줄에서는 별이 점점 늘어나다가, N부터 1까지의 줄에서는 별이 점점 줄어드는 패턴을 출력해야 합니다.

입력: 첫째 줄에 N이 주어집니다.

출력: 첫째 줄부터 2×N-1번째 줄까지 별을 출력해야 합니다.


코드 설명:

  1. 우선, 사용자로부터 N 값을 입력받습니다.
  2. cnt 변수는 총 줄 수를 나타냅니다. 이 줄 수는 2 * N - 1입니다.
  3. a 변수는 현재 줄에서 출력할 별의 개수를 나타냅니다.
  4. flag 변수는 N 줄까지 증가 후 감소하는 지점을 표시합니다.
  5. while 루프를 사용하여 패턴을 출력합니다. 루프는 cnt 변수를 감소시키며, cnt가 0이 될 때까지 실행됩니다.
  6. 각 줄에서는 a 개수만큼 별을 출력하고, a 값이 N과 같아지면 flag를 1로 설정합니다.
  7. flag 값에 따라 a 값을 증가 또는 감소시킵니다.
  8. 각 줄을 출력한 후, 마지막 줄을 제외한 모든 줄 끝에 개행 문자("\n")를 출력하여 줄을 바꿉니다.