[C]백준 2440 : 별 찍기 - 3
2023년 1월 24일에 작성됨
https://www.acmicpc.net/problem/2440
2440번: 별 찍기 - 3
첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제
www.acmicpc.net
문제 분석
이중 for문을 이용하여 문제를 풀 수 있다.
소스 코드 (⭕)
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
for (int i = 0; i < a; i++)
{
for (int j = a - i; j > 0; j--)
{
printf("*");
}
printf("\n");
}
}
코드 분석
예를 들어 a = 4라고 하면,
i | j |
0 | 4, 3, 2, 1 |
1 | 3, 2, 1 |
2 | 2, 1 |
3 | 1 |
여기서 i와 j가 '몇 번' 실행되는지에 주목할 것!
i를 \n으로 생각하고, j를 * 출력으로 생각해보자.
코드 상 안쪽 for문이 먼저 실행되므로
i = 0일 때, printf("*") 4번 반복, printf("\n") 1번
i = 1일 때, printf("*") 3번 반복, printf("\n") 1번
i = 2일 때, printf("*") 2번 반복, printf("\n") 1번
i = 3일 때, printf("*") 1번 반복, printf("\n") 1번
이런 식으로 a 값에 따라 예제 출력과 같은 모양으로 출력할 수 있다.
여기서 핵심은 안쪽 for문에서 j의 값이 a - i부터 시작한다는 것이다.
a 값은 고정이고, i 값은 0부터 a-1까지 증가하므로 j의 시작점은 계속 감소하는 방식으로 별의 개수를 역순으로 출력해주는 것이다.
end
처음 별 찍기 문제를 풀고 거의 반년이 지나서 실력 확인 겸 다시 풀어보려고 했는데.. 쉽게 풀리겠지? 하고 풀다가 생각보다 헷갈려서 충격 먹었다..!!! 😭😭
그래도 혼자 풀 수 있는 난이도이긴 하지만 빠르게 풀릴 줄 알았는데 쩝..
더 열심히 하자 파이팅!!! 혼자서 별 찍기 정복해주겠어ㅂㄷㅂㄷ