[C]백준 2440 : 별 찍기 - 3

Alal11·2023년 1월 23일
0
post-thumbnail

출처

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


문제

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제


입력

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


출력

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


예제 입출력


알고리즘 분류

  • 구현

➡️문제 분석

이중 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라고 하면,

ij
04, 3, 2, 1
13, 2, 1
22, 1
31

여기서 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

처음 별 찍기 문제를 풀고 거의 반년이 지나서 실력 확인 겸 다시 풀어보려고 했는데.. 쉽게 풀리겠지? 하고 풀다가 생각보다 헷갈려서 충격 먹었다..!!! 😭😭
그래도 혼자 풀 수 있는 난이도이긴 하지만 빠르게 풀릴 줄 알았는데 쩝..
더 열심히 하자 파이팅!!! 혼자서 별 찍기 정복해주겠어ㅂㄷㅂㄷ

0개의 댓글