본문 바로가기
알고리즘/백준 문제 풀이

[BOJ/백준] 2444번 별 찍기-7 - [c/c++] 풀이

by 미니상미니 2023. 5. 13.
반응형

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

 

2444번: 별 찍기 - 7

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

www.acmicpc.net

 

 

 

 


  • 문제


해설

필자의 생각으로는 별 찍기 문제는 해설을 듣는 거보다는, 혼자 깨닫는 게 더 좋은 것 같다.


입력받은 수를 n이라고 할 때
별은 피라미드 형식으로 n * 2 - 1줄에 걸쳐 출력하면 되는 문제이다.

먼저 for문을 줄을 의미하는 1부터 n번까지 돌린다.

1번째 줄은 (n - 1)개의 공백 후 별을,
2번째 줄은 (n - 2)개의 공백 후 별을 하는데 

i번째 줄 -> (n - i)개의 공백 후 별을 출력하는 규칙이 있다.

별의 개수는 i번째 줄 -> i + (i - 1) = 2i - 1개의 별을 출력하면 된다.

 

위의 공식을 이용하여 1 ~ n번 줄까지 출력한 후,
피라미드 이므로 반대로 (n - 1)번 ~ 1번 줄까지 출력하면 된다.

 

코드

c

#include <stdio.h>

int main() {

	int n;
	scanf("%d", &n);

	for(int i = 1; i <= n; i++) {
		for(int k = 0; k < n - i; k++)
			printf(' ');
		for(int k = 0; k < i + (i - 1); k++)
			printf("*");

		printf("\n");
	}

	for(int i = n - 1; i > 0; i--) {
		for(int k = 0; k < n - i; k++)
						printf(' ');
		for(int k = 0; k < i + (i - 1); k++)
			printf("*");

		printf("\n");
	}

	return 0;
}

 

c++

#include <iostream>
#include <vector>

using namespace std;

int main() {

	int n;
	cin >> n;

	for(int i = 1; i <= n; i++) {
		for(int k = 0; k < n - i; k++)
			cout << ' ';
		for(int k = 0; k < i + (i - 1); k++)
			cout << '*';

		cout << '\n';	
	}

	for(int i = n - 1; i > 0; i--) {
		for(int k = 0; k < n - i; k++)
			cout << ' ';
		for(int k = 0; k < i + (i - 1); k++)
			cout << '*';

		cout << '\n';	
	}

	return 0;
}

 

 

 

 

 

 

반응형

댓글