별찍기 10
음 모르겠다.... 그 이전 것들은 쉬웠는데
<https://j3sung.tistory.com/65>
이것을 참고 했따.
프랙탈 처럼 뭔가 같은 모양이 반복된다는 건 알겠었는데
한줄씩 출력해야 될것이라 생각 했다.
전체를 배열로 놓고 채울 생각을 못했따. 전에 그냥 줄게 관계 없이 하면 좋겠다는 생각 정도는 했었는데
분할정복이라니....
스스로 구현해볼라했는데
분할 정복의 코드를 모르는거 같다.;;
#define _CRT_SECURE_NO_WARNINGS
#define debug 0
#include <iostream>
#include <algorithm>
#include <vector>
#include<string.h>
#include<set>
#include<queue>
#include<math.h>
using namespace std;
#define NUM 3001
#define MAXV 10000001
long long int N, M, S;
char arr[NUM][NUM];
void CQ(int size,int r,int c) {
if (size == 1) {
arr[r][c] = '*';
return;
}
int n = size / 3;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
continue;
}
else {
CQ(n,r+ n*i,c+ n*j);
}
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
freopen("input.txt", "r", stdin);
cin >> N;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
arr[i][j] = ' ';
}
}
CQ(N, 0, 0);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << arr[i][j];
}
cout << "\n";
}
return 0;
}
별찍기11
#define _CRT_SECURE_NO_WARNINGS
#define debug 0
#include <iostream>
#include <algorithm>
#include <vector>
#include<string.h>
#include<set>
#include<queue>
#include<math.h>
using namespace std;
#define NUM 4000
#define MAXV 10000001
long long int N, M, S;
char arr[NUM][NUM];
void CQ(int size,int r,int c) {
if (size == 3) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
if (i == 0 && j == 2) {
arr[r + i][c + j] = '*';
}
else if (i == 1 && (j == 1 || j == 3)) {
arr[r + i][c + j] = '*';
}
else if (i == 2) {
arr[r + i][c + j] = '*';
}
}
}
return;
}
int n = size / 2;
CQ(n, r, c+size/2);
CQ(n, r + size / 2, c);
CQ(n, r + size / 2, c + size);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("input.txt", "r", stdin);
cin >> N;
for (int i = 0; i < NUM; i++) {
for (int j = 0; j < NUM; j++) {
arr[i][j] = ' ';
}
}
CQ(N, 0, 0);
for (int i = 0; i < N; i++) {
for (int j = 0; j < 2*N; j++) {
cout << arr[i][j];
}
cout << "\n";
}
return 0;
}
틀렸다;;
왜 틀리는지 모르겠다;
고쳤다. 배열의 열 크기를 두배로 해주니 맞았다;;;
**
이 문제들을 풀어보면서 내가 문제에 대한 기본적인 접근이 많이 부족하다는 것을 다시 느꼈다.....분할 정복을 이용할 생각하지 못하고 배열을 이용할 생각 하지 못했다는게 충격적인데 어떻게 할지 여전히 잘 모르겠다.......