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

알고리즘(C++) / 백준 2438, 2440, 2445, 10991, 10992 : 별찍기

by clean_h 2021. 2. 16.
728x90

2438 - 별찍기

www.acmicpc.net/problem/2438

 

2438번: 별 찍기 - 1

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

www.acmicpc.net

문제

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

 

코드

//2438 별찍기
#include <iostream>
using namespace std;

int main() {
	int N = 0;

	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < i + 1; j++) {
			cout << "*";
		}
		cout << endl;
	}

	return 0;
}

출력

 


 

2440 - 별찍기 3

www.acmicpc.net/problem/2440

 

2440번: 별 찍기 - 3

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

www.acmicpc.net

문제

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

 

코드

//2440 별찍기-3
#include <iostream>
using namespace std;

int main() {
	int N = 0;

	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int j = N; j > i; j--) {
			cout << "*";
		}
		cout << endl;
	}
	return 0;
}

 

출력

 


 

 

2445 - 별찍기 8

www.acmicpc.net/problem/2445

 

2445번: 별 찍기 - 8

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

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

 

코드

//2445 별찍기-8
#include <iostream>
using namespace std;

int main() {
	int N = 0;

	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < i + 1; j++) {
			cout << "*";
		}
		for (int k = N; k > i + 1; k--) {
			cout << "  ";
		}
		for (int j = 0; j < i + 1; j++) {
			cout << "*";
		}
		cout << endl;
	}

	for (int i = 0; i < N - 1; i++) {
		for (int j = N - 1; j > i; j--)
			cout << "*";
		for (int k = 0; k < i + 1; k++)
			cout << "  ";
		for (int j = N - 1; j > i; j--)
			cout << "*";
		cout << endl;
	}

	return 0;
}

출력

 


 

10991 - 별찍기 16

www.acmicpc.net/problem/10991

 

10991번: 별 찍기 - 16

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

 

코드

//10991 별찍기-16
#include <iostream>
using namespace std;

int main() {

	int N;
	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int k = N; k > i+1; k--) {
			cout << " ";
		}
		for (int j = 0; j < i + 1; j++)
			cout << "* ";
		cout << endl;
	}

	return 0;
}

출력

 


 

10992 - 별찍기 17

www.acmicpc.net/problem/10992

 

10992번: 별 찍기 - 17

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

 

코드

//10992 별찍기-17
#include <iostream>
using namespace std;

int main() {

	int N;
	cin >> N;

	for (int i = 0; i < N; i++) {
		for (int k = N - 1; k > i; k--) {
			cout << " ";
		}
		if (i == 0) {
			cout << "*";
		}
		else if (i == N - 1) {
			for (int j = 0; j < 2 * N - 1; j++)
				cout << "*";
		}
		else {
			cout << "*";
			for (int j = 0; j < i * 2 - 1; j++) {
				cout << " ";
			}
			cout << "*";
		}
		cout << endl;
	}
	return 0;
}

출력

 


 

고찰

별찍기 문제는 크게 어려움이 없었다.

혹시 틀린 부부은 없는지 다른 사람의 코드도 참고해 보았지만 다 비슷하게 코드를 구현하였다. 

그 중 2445번 문제에서 제일 시간이 많이 걸렸지만 하나씩 커지는 부분과 작아지는 부분 나눠서 구현해서 쉽게 구현하였다.

728x90

댓글