반응형
https://www.acmicpc.net/problem/2444
- 문제
해설
필자의 생각으로는 별 찍기 문제는 해설을 듣는 거보다는, 혼자 깨닫는 게 더 좋은 것 같다.
입력받은 수를 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;
}
반응형
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[BOJ/백준] 1316번 그룹 단어 체커 - [c/c++] 풀이 (1) | 2023.05.26 |
---|---|
[BOJ/백준] 10988번 팰린드롬인지 확인하기 - [c/c++] 풀이 (0) | 2023.05.25 |
[BOJ/백준] 11718번 그대로 출력하기 - [c/c++] 풀이 (0) | 2023.05.13 |
[BOJ/백준] 9086번 문자열 - [c/c++] 풀이 (2) | 2023.05.12 |
[BOJ/백준] 2743번 단어 길이 재기 - [c/c++] 풀이 (0) | 2023.05.12 |
댓글