[CPP] 백준 2444 별 찍기 - 7

#include <iostream>
#include <string>
using namespace std;

int main() {
	int N;
    cin>>N;
    string ar;
    
    int M=1;
    int Q=4;
    for(int s=0;s<N;s++){
    	ar.clear();
    	for(int t=0;t<Q;t++){
        	ar+=" ";
            Q--;
        }
        for(int t=0;t<M;t++){
        	ar+="*";
            M+=2;
        }
        cout<<ar<<endl;
    }
    M-=2;
    Q+=1;
    for(int s=1;s<N;s++){
    	ar.clear();
    	for(int t=0;t<Q;t++){
        	ar+=" ";
            Q++;
        }
        for(int t=0;t<M;t++){
        	ar+="*";
            M-=2;
        }
        cout<<ar<<endl;
    }
    return 0;
}

이렇게 함

메모리 초과임 

줄여야 함 

#include <iostream>
#include <string>
using namespace std;

int main() {
	int N;
    cin>>N;
    string ar[199];
    
    int M=1;
    int Q=N-M;
    int s,t;
    for(s=0;s<N;s++){
    	for(t=0;t<Q;t++){
        	ar[s]+=" ";
            Q--;
        }
        for(t=0;t<M;t++){
        	ar[s]+="*";
            M+=2;
        }
        cout<<ar[s]<<endl;
    }
    for(s=N-2;s>=0;s--){
    	cout<<ar[s]<<endl;
    }
    return 0;
}

음 얘도 실패 

 

 

아래는 모범 답안 

#include <iostream>
using namespace std;

int main() {
	int N=0;
    cin>>N;
    
    for(int i=1;i<=N;i++){
    	for(int j=N-i;j>0;j--)
        	cout<<" ";
        for(int j=2*i-1;j>0;j--){
        	cout<<"*";
        }
        cout<<endl;
    }
    
    for(int i=1;i<N;i++){
    	for(int j=0;j<i;j++){
        	cout<<" ";
        }
        for(int j=2*(N-i)-1;j>0;j--){
        	cout<<"*";
        }
        cout<<endl;
    }
    return 0;
}