// 메타 템플릿 버전. 당연히 초고속인데 리터럴 상수만 쓸 수 있는게 아쉽...
template< int result >
struct ReverseMeta< 0, result >
{ enum { value = result }; };template< int input, int result = 0 >
struct IsPalindromeMeta{ enum { value = (input == ReverseMeta< input, result >::value) }; };
// 람다 재귀 버전. 어쨌든 템플릿이니까 그래도 좀 낫겠지
return 0 == quotient ? result * 10 + input : func(quotient, result * 10 + input % 10);
};
do
{
const int quotient = input % 10;
*forwardPointer = quotient;
++forwardPointer;*backwardPointer = quotient;
--backwardPointer;input /= 10;
} while (0 < input);return 0 == memcmp(array, backwardPointer + 1, sizeof(*array) * (forwardPointer - array));
}
'코드' 카테고리의 다른 글
다시 해본 동전 문제 (0) | 2013.01.09 |
---|---|
파이썬에서 A = [1,2,3]와 A[:] = [1,2,3]의 차이 (0) | 2012.03.13 |
셀프 넘버들의 합 구하기 (0) | 2012.01.14 |
던젼 생성 2/2 (0) | 2010.08.16 |
던젼 생성 1/2 (0) | 2010.08.06 |