@ 바람개비 떡밥
이제는 바야흐로 삼각형 별찍기의 시대가 가고 바람개비 별찍기의 시대가 오나보다.
이걸 뭐 for문을 2개 쓰니 4개 쓰니 말이 많은데, 어거지를 발휘하면 2개로 가능하다.
(물론 패턴 분석이 필요하지만...)
여러 방법이 있을 것 같은데, 직관적인 방법은 삼각형 4개를 쪼개서 각각을 생각하는 것인 것 같다.
그래서 사분면을 나누고, 각 사분면에 따라 *을 찍느냐 공백을 찍느냐를 판별하였다.
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int size;
cout << "Enter a size:" << endl;
cin >> size;
for( int i = 0 ; i < 2 * size ; i++)
{
for( int j = 0 ; j < 2 * size ; j++)
{
int iQuadrant = 1;
// 사분면 판정
if( i < size && j <= size )
iQuadrant = 1;
else if( i < size && j < size )
iQuadrant = 2;
else if( i >= size && j < size )
iQuadrant = 3;
else
iQuadrant = 4;
// 사분면에 따라 '*' 인지 ' ' 인지 결정하는 로직이 다름
switch( iQuadrant )
{
case 1:
if( ( (j - size) - (size - 1) + i) >= 0 )
cout << "*";
else
cout << " ";
break;
case 2:
if( i > j )
cout << " ";
else
cout << "*";
break;
case 3:
if( ( (i - size) - (size - 1) + j) <= 0 )
cout << "*";
else
cout << " ";
break;
case 4:
if( (i - size) < (j - size) )
cout << " ";
else
cout << "*";
break;
}
}
cout << endl;
}
return 0;
}
|
'Dev.Programming > DS/Algorithm' 카테고리의 다른 글
| Stack - in Ruby (0) | 2009/03/03 |
|---|---|
| 간단한 문제...(연속된 숫자 그룹 맺어주기) (0) | 2008/09/23 |
| 바람개비 별찍기(for 문 2개 이용) (0) | 2008/06/12 |
| 자기복제수 문제 (0) | 2008/05/23 |
| Dijkstra 관련 문제 하나...(출처 : 프로그래밍 갤러리) (0) | 2008/05/23 |
| (IBM DW)코드 트레이닝 Part2. 알고리즘과 성능 - 트랙백 (0) | 2008/05/23 |
TAG 바람개비


