코딩테스트 & 문제 풀이

[C]백준_2441 : 별 찍기 - 4

Hicecream 2023. 11. 20. 17:06

2023년 1월 26일에 작성됨

 

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

 

2441번: 별 찍기 - 4

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 

 

문제 분석

이중 for문을 사용하여 줄 바꿈과 별, 공백을 출력하는 for문을 따로 만들어 준다.

 

 

소스 코드 (⭕)

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);

    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < i; j++)
        {
            printf(" ");
        }
        for (int k = a - i; k > 0; k--)
        {
            printf("*");
        }
        printf("\n");
    }
}

 

코드 분석

1. a를 입력받고 i를 0부터 a-1까지 a번 반복하는 바깥 for문을 생성한다.

2. 공백과 별을 출력하는 반복문을 따로 만들어준다.

     2-1. 공백은 0칸, 1칸, ..., a-1칸씩 늘어나므로 j는 0부터 1씩 증가하며 j<i 범위까지 반복하여 출력해준다.

     2-2. 별은 a개, a-1개, ..., 1개씩 줄어드니까 k를 a-i부터 1씩 감소하여 k>0 범위까지 반복하여 출력해준다.

3. 바깥 for문으로 a번 만큼 안쪽 for문인 빈칸과 공백을 출력하는 과정이 끝난 뒤에 줄바꿈 \n을 1번씩 해주는 것을 반복한다.

 

 

 

end

아직까진 혼자 풀 수 있는 난이도인데 푸는 속도가 좀 느리다ㅜ_ㅜ
별 개수 출력하는 반복문에서 k=a-i 부분을 생각해내는게 조금 걸렸다.