2442. 별 찍기 - 5 문제 풀이
Idea
띄어쓰기 : n-1, n-2, n-3, ..., 0개
별 : 1, 3, 5, 7, 9, ..., 2n-1개
(예) n=5면,
* | ||||||||
* | * | * | ||||||
* | * | * | * | * | ||||
* | * | * | * | * | * | * | ||
* | * | * | * | * | * | * | * | * |
띄어쓰기는 점점 줄어들고, *은 점점 늘어나는 걸 알 수 있으며
첫번째줄 : * = 1개, 띄어쓰기 = 5 - 1개
두번째줄 : * = 3개, 띄어쓰기 = 5 - 2개
...
다섯번째줄 : * = 2*5-1개, 띄어쓰기 = 5 - 5개
임을 알 수 있다. 여기서 규칙을 찾아내면,
i번째줄 : * = 2*i - 1개, 띄어쓰기 = n - i개임을 알 수 있으며, 이것을 for문을 통해 구현하면 된다.
Code
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; //몇번째 줄까지 출력할 것인지 사용자로부터 입력받음
for (int i = 1; i < n+1; i++) { //몇째줄?
for (int j = 0; j < n-i; j++) { //i번째 줄에 띄어쓰기 몇번 필요하니?
cout << ' ';
}
for (int j = 1; j < 2 * i; j++) { //i번째 줄에 *은 몇개 필요하니?
cout << '*';
}
cout << '\n'; //한 줄이 끝나면 줄바꿈 해준다.
}
return 0;
}
반응형