본문 바로가기
Online-Judge/Baekjoon

[BOJ] C++ 2441번 별 찍기 - 4

by nyangzzi 2021. 5. 15.
반응형

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

 

2441번: 별 찍기 - 4

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

www.acmicpc.net

별을 역순으로 오른쪽으로 정렬하여 출력한다.

 

출력해야하는 라인의 개수 i는 입력 N개이므로, for문을 사용하여 반복해준다.

for (int i = 1; i <= N; i++) {
	/*
	각 라인마다 별을 출력하는 코드 여기에 작성
	*/
	cout << endl; //한 줄을 출력한 뒤에는 한 줄 내리기
}

 

각 라인의 별은 오른쪽으로 정렬하여 출력해야하는데,

이때 왼쪽의 공백 영역과 오른쪽의 별 영역으로 나누어 생각할 수 있다.

 

왼쪽의 공백 영역의 경우, 각 라인에서 출력해야할 공백의 수는 다음과 같다.

(입력 N) - (오른쪽 별의 개수)

 

이때 오른쪽 별의 개수는 아래와 같으며,

왼쪽 공백의 수는 반대로 1부터 라인 i까지의 개수보다 하나 더 작다.

예를 들어 넘버 4인 라인의 경우, 공백은 1, 2, 3 으로 모두 3개 출력해야한다.

//왼쪽 공백영역
for (int k = 1; k <= i-1; k++) {
	cout << " ";
}

 

오른쪽의 별 영역의 경우, 해당 라인의 넘버에서 N까지의 개수와 동일하다.
예를 들어, N이 5일 때 라인의 넘버가 2일 경우, 2, 3, 4, 5 로 별은 모두 4개 출력해야한다.

//오른쪽 별 영역
for (int j = i; j <= N; j++) {
	cout << "*";
}

 


 

[BOJ-2441.cpp]

#include <iostream>
using namespace std;

int main() {
	int N = 0;
	cin >> N;

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

'Online-Judge > Baekjoon' 카테고리의 다른 글

[BOJ] C++ 2443번 별 찍기 - 6  (0) 2021.05.16
[BOJ] C++ 2442번 별 찍기 - 5  (0) 2021.05.16
[BOJ] C++ 2440번 별 찍기 - 3  (0) 2021.05.15
[BOJ] C++ 2439번 별 찍기 - 2  (0) 2021.05.15
[BOJ] C++ 2438번 별 찍기 - 1  (0) 2021.05.14

댓글