반응형
https://www.acmicpc.net/problem/2439
출력해야할 라인의 수 i는 N번 반복해야한다.
for (int i = 1; i <= N; i++) {
/*
여기에 각 라인마다 출력할 코드 넣기
*/
cout << endl; //한 줄 출력 한 뒤에 내리기
}
각 라인의 별은 오른쪽으로 정렬하여 출력해야하는데,
이때 왼쪽의 공백 영역과 오른쪽의 별 영역으로 나누어 생각할 수 있다.
왼쪽의 공백 영역의 경우, 각 라인에서 출력해야할 공백의 수는 다음과 같다.
(입력 N) - (오른쪽 별의 개수)
오른쪽 영역 별의 개수는 해당 라인의 넘버 i와 동일하므로 i+1부터 N까지 반복하면 공백의 수가 된다.
for (int j = i+1; j <= N; j++) {
cout << " ";
}
오른쪽의 별 영역의 경우, 해당 라인의 넘버와 동일하므로 i번만큼 반복한다.
for (int k = 1; k <= i; k++) {
cout << "*";
}
[주의 할 점]
공백을 하나 더 출력하지 않도록 주의해야한다.
[잘못된 코드]
for (int i = 1; i <= N; i++) {
// 공백은 N-(각 라인의 별의 개수)개만큼 출력필요
for (int j = i; j <= N; j++) { //N-(각 라인의 별의 개수)+1만큼 반복
cout << " ";
}
for (int k = 1; k <= i; k++) {
cout << "*";
}
cout << endl;
}
이럴 경우 다음과 같이 공백을 하나 더 출력한다.
[BOJ-2539.cpp]
#include <iostream>
using namespace std;
int main() {
int N = 0;
cin >> N;
for (int i = 1; i <= N; i++) {
for (int j = i+1; j <= N; j++) {
cout << " ";
}
for (int k = 1; k <= i; k++) {
cout << "*";
}
cout << endl;
}
}
반응형
'Online-Judge > Baekjoon' 카테고리의 다른 글
[BOJ] C++ 2441번 별 찍기 - 4 (0) | 2021.05.15 |
---|---|
[BOJ] C++ 2440번 별 찍기 - 3 (0) | 2021.05.15 |
[BOJ] C++ 2438번 별 찍기 - 1 (0) | 2021.05.14 |
[BOJ] C++ 2739번 구구단 (0) | 2021.05.14 |
[BOJ] C++ 2742 기찍N (0) | 2021.05.14 |
댓글