알고리즘/BOJ

백준 13015번 별 찍기 - 23

꾸준함. 2020. 4. 10. 09:37

문제 링크입니다: https://www.acmicpc.net/problem/13015

 

13015번: 별 찍기 - 23

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

www.acmicpc.net

세 가지 규칙을 파악해야하는 별 찍기 문제였습니다.

1. 맨위와 맨아래

2. 가운데

3. 그리고 나머지

 

나머지의 경우 대칭이기 때문에 절댓값인 abs 함수를 사용해야했습니다.

별 찍기의 문제 경우 맨 끝 * 이후 공백이 있으면 WA 받기 때문에 주의해야합니다!

 

#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
int N;
cin >> N;
for (int i = 0; i < 2 * N - 1; i++)
{
// 맨위 맨 아래
if (i == 0 || i == 2 * N - 2)
{
for (int j = 0; j < N; j++)
{
cout << "*";
}
for (int j = 0; j < 2 * N - 3; j++)
{
cout << " ";
}
for (int j = 0; j < N; j++)
{
cout << "*";
}
cout << "\n";
continue;
}
// 가운데
if (i == N - 1)
{
for (int j = 0; j < N - 1;j++)
{
cout << " ";
}
cout << "*";
for (int j = 0; j < N - 2; j++)
{
cout << " ";
}
cout << "*";
for (int j = 0; j < N - 2; j++)
{
cout << " ";
}
cout << "*\n";
continue;
}
// 나머지
for (int j = 0; j < (N - 1) - abs(N - 1 - i); j++)
{
cout << " ";
}
cout << "*";
for (int j = 0; j < N - 2; j++)
{
cout << " ";
}
cout << "*";
for (int j = 0; j < 2 * abs((N - 1) - i) - 1; j++)
{
cout << " ";
}
cout << "*";
for (int j = 0; j < N - 2; j++)
{
cout << " ";
}
cout << "*\n";
}
return 0;
}
view raw .cpp hosted with ❤ by GitHub

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형