어느정도 규칙은 찾았지만 함수를 2개 선언해야하는것, 전역변수에 2차원 배열을 선언하는것을
생각해 내지 못했다
👩🏻💻 문제링크
https://www.acmicpc.net/problem/10994
10994번: 별 찍기 - 19
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
www.acmicpc.net
✍️ 아이디어
1. 문제 이해
- 우선 안에 있는 별 모음을 둘러싸는 별 모음을 만들어야한다
2. 이전 별 모음의 바깥쪽을 둘러쌓는 새로운 별모음을 만드는것이 재귀적이다
3. 다음번 별 모음을 생성할려면 인덱스가 +2, +2 씩 더해진다
✍️소스코드
- 다른 사람의 코드를 어느정도 보고 내 방식대로 구현해 본것
#include <iostream>
using namespace std;
char arr[400][400];
void Draw_star(int num, int row, int col)
{
int x_x = (num-1)*4+1;
if(num<=0) return;
else
{
for(int i=0; i<x_x; i++)
{
for(int j=0; j<x_x; j++)
{
if(i==0 || i==x_x-1)
{
arr[i+row][j+col]='*';
}
else
{
if(j==0 || j==x_x-1)
arr[i+row][j+col]='*';
else
arr[i+row][j+col]=' ';
}
}
}
}
}
void Start(int n, int row, int col)
{
Draw_star(n, row, col);
if (n == 1)
{
return;
}
Start(n - 1, row + 2, col + 2); //이것이 핵심
}
int main()
{
int N; cin>>N;
Start(N,0,0);
for(int i=0; i<(N-1)*4+1; i++)
{
for(int j=0; j<(N-1)*4+1; j++)
cout<<arr[i][j];
cout<<endl;
}
}
Start(n - 1, row + 2, col + 2); 이것이 핵심....2차원 배열을 사용해야한다는것을 알았다면 떠올릴수 있지 않았을까..? ㅜ
참고한 다른사람의 코드
https://ansohxxn.github.io/boj/10994/
[백준 10994][🤍4] 별 찍기(19) (재귀, DFS)
별 찍기 19
ansohxxn.github.io
체감난이도 | 걸린시간 | 참고 | 사용 문법 |
중상 | 1h | 다른사람 코드 봄 | 재귀, for문으로 구현 |
놓친 부분
-> 내가 생각한 컴퓨터가 알아서 슈슉 돌리고 결과를 짠하고 보여주는것은 불가능함 저장할 공간이 필요함!!! (여기선 2차원 배열)
'PS 연습' 카테고리의 다른 글
[백준] 백준 문제 풀이 - 11724 연결요소의 갯수 (0) | 2022.05.11 |
---|---|
[백준] 백준 문제 풀이 - 1260 DFS/BFS (0) | 2022.05.11 |
[PS 연습 - 정렬] 백준 문제 풀이 - 11651 좌표 정렬하기 2 (0) | 2022.04.25 |
[자료구조] 백준 문제 풀이 - 2075 N번째 큰 수 (0) | 2022.04.24 |
[알고리즘] 백준 문제 풀이 - 2108 통계학 (0) | 2022.04.23 |