기록공간

별찍기 - 10 (백준-2447) 본문

Algorithm/문제

별찍기 - 10 (백준-2447)

입코딩 2019. 7. 26. 11:33
반응형
#include <iostream>
using namespace std;

class CStar
{
public:
	CStar(){ }
	~CStar() 
	{
		if (m_ppArr) {
			for (int i = 0; i < m_nCount; ++i) {
				if (m_ppArr[i]) {
					delete[] m_ppArr[i];
					m_ppArr[i] = nullptr;
				}
			}
			delete[] m_ppArr;
			m_ppArr = nullptr;
		}
	}
public:
	int GetCount() { return m_nCount; }
public:
	void Solve(int x, int y, int num)
	{
		if (num == 1) {
			m_ppArr[x][y] = '*';
			return;
		}

		int divide = num / 3;

		for (int i = 0; i < 3; ++i) {
			for (int j = 0; j < 3; ++j) {
				if (i == 1 && j == 1) {

				}
				else {
					Solve(x + (i * divide), y + (j * divide), divide);
				}
			}
		}
	
	}
	void InputAndAllocate()
	{
		cin >> m_nCount;
		m_ppArr = new char*[m_nCount + 1];
		for (int i = 0; i < m_nCount; ++i) {
			m_ppArr[i] = new char[m_nCount + 1];
			for (int j = 0; j < m_nCount; ++j) {
				m_ppArr[i][j] = ' ';
			}
		}
		
	}
	void PrintStar()
	{
		for (int i = 0; i < m_nCount; ++i) {
			for (int j = 0; j < m_nCount; ++j) {
				cout << m_ppArr[i][j];
			}
			cout << endl;
		}
	}
private:
	int m_nCount = 0;
	char **m_ppArr = nullptr;
};

int main()
{
	CStar g;
	g.InputAndAllocate();
	g.Solve(0, 0, g.GetCount());
	g.PrintStar();
}
반응형

'Algorithm > 문제' 카테고리의 다른 글

로프 (백준 - 2217번)  (0) 2020.02.08
회의실배정 (백준 - 1931번)  (0) 2020.02.08
동전 0 (백준 - 11047번)  (0) 2020.02.08
ATM (백준 - 11399번)  (0) 2020.02.08
하노이탑(백준-11729)  (0) 2019.07.26
Comments