티스토리 뷰

문제 링크

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

 

13015번: 별 찍기 - 23

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

www.acmicpc.net

 

구현 코드

 

#include <iostream>
using namespace std;
void draw_first_and_last(int n, int a){
for(int i=1;i<=n*2+a;i++){
if(i <= n || i > n+a)
cout << '*';
else
cout << ' ';
}
cout << endl;
}
void draw_stars(int n){
for(int i=0;i<n;i++)
cout << '*';
}
void draw_space(int n){
for(int i=0;i<n;i++)
cout << ' ';
}
int main(){
int n;
cin >> n;
int a = n * 2 - 3;
draw_first_and_last(n, a);
for(int i=1;i<n;i++){
draw_space(i);
draw_stars(1);
draw_space(n-2);
draw_stars(1);
if(i != n-1){
draw_space(a-(i*2));
draw_stars(1);
}
draw_space(n-2);
draw_stars(1);
cout << endl;
}
for(int i=n-2;i>=1;i--){
draw_space(i);
draw_stars(1);
draw_space(n-2);
draw_stars(1);
draw_space(a-(i*2));
draw_stars(1);
draw_space(n-2);
draw_stars(1);
cout << endl;
}
draw_first_and_last(n, a);
return 0;
}
view raw 13015.cpp hosted with ❤ by GitHub
def draw_first_and_last(n, a):
for i in range(1, n*2+a+1):
if i <= n or i > n+a:
print('*', end="")
else:
print(' ', end="")
print("")
def draw_star(n):
print('*'*n, end="")
def draw_space(n):
print(' '*n, end="")
n = int(input())
a = n * 2 - 3
draw_first_and_last(n,a)
for i in range(1,n):
draw_space(i)
draw_star(1)
draw_space(n-2)
draw_star(1)
if i != n-1:
draw_space(a-(i*2))
draw_star(1)
draw_space(n-2)
draw_star(1)
print("")
for i in range(n-2,0,-1):
draw_space(i)
draw_star(1)
draw_space(n-2)
draw_star(1)
draw_space(a-(i*2))
draw_star(1)
draw_space(n-2)
draw_star(1)
print("")
draw_first_and_last(n,a)
view raw 13015.py hosted with ❤ by GitHub