문제 링크입니다: https://www.acmicpc.net/problem/10997
10997번: 별 찍기 - 22
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
www.acmicpc.net
N=1일 때는 별도로 처리하고,
N=2일 때부터 재귀함수를 호출해주면 되는 문제였습니다.
주의할 점은, 두 번째 줄은 왼쪽 * 이후에 공백을 출력하면 "출력하는 형식이 잘못되었습니다." 처리가 된 다는 점입니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
const int MAX = 4 * 100 + 100; | |
char starMap[MAX][MAX]; | |
void func(int y, int x, int depth) | |
{ | |
if (depth == 2) | |
{ | |
for (int i = 0; i < 5; i++) | |
{ | |
starMap[y][x + i] = '*'; | |
starMap[y + 6][x + i] = '*'; | |
} | |
for (int i = 1; i < 6; i++) | |
{ | |
starMap[y + i][x] = '*'; | |
} | |
for (int i = 2; i < 6; i++) | |
{ | |
starMap[y + i][x + 4] = '*'; | |
if (i > 4) | |
{ | |
continue; | |
} | |
starMap[y + i][x + 2] = '*'; | |
} | |
starMap[y + 2][x + 3] = '*'; | |
return; | |
} | |
// 맨위, 맨아래 | |
for (int i = 0; i < 4 * (depth - 1) + 1; i++) | |
{ | |
starMap[y][x + i] = '*'; | |
starMap[y + 7 + 4 * (depth - 2) - 1][x + i] = '*'; | |
} | |
// 맨 왼쪽, 오른쪽 | |
for (int i = 1; i < 7 + 4 * (depth - 2); i++) | |
{ | |
starMap[y + i][x] = '*'; | |
if (i == 1) | |
{ | |
continue; | |
} | |
starMap[y + i][x + 4 * (depth - 1)] = '*'; | |
} | |
// (맨 위에서 세 번쨰, 맨 오른쪽에서 두 번쨰) | |
starMap[y + 2][x + 4 * (depth - 1) - 1] = '*'; | |
func(y + 2, x + 2, depth - 1); | |
return; | |
} | |
int main(void) | |
{ | |
int N; | |
cin >> N; | |
if (N == 1) | |
{ | |
cout << "*\n"; | |
return 0; | |
} | |
func(0, 0, N); | |
for (int i = 0; i < 7 + 4 * (N - 2); i++) | |
{ | |
if (i == 1) | |
{ | |
cout << "*\n"; | |
continue; | |
} | |
for (int j = 0; j < 4 * (N - 1) + 1; j++) | |
{ | |
char c = starMap[i][j] == '*' ? '*' : ' '; | |
cout << c; | |
} | |
cout << "\n"; | |
} | |
return 0; | |
} |


개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2522번 별 찍기 - 12, 백준 2523번 별 찍기 - 13 (0) | 2020.04.10 |
---|---|
백준 13015번 별 찍기 - 23 (0) | 2020.04.10 |
백준 10994번 별 찍기 - 19 (0) | 2020.04.08 |
백준 10993번 별 찍기 - 18 (0) | 2020.04.07 |
백준 10899번 King of penalty (0) | 2020.04.07 |