1. 메타데이터(meta data)
문제) 구글 입사 문제
양의 정수 n에 대해서 1과 n 사이에 1이 나오는 횟수를 나타내는 함수를 f(n)이라고 한다. 예를 들어 f(13)=6이다.
f(n)=n이 되는 첫 번째 양수는 1이다. 두 번째 양수를 구할 수 있는 코드를 구현하시오. (정답은 199981)
일반적인 해법)
메타데이터로서 접근)
일반적인 해법과 메타데이터로서의 접근과의 근본적인 차이점은, 실행시간에서의 결과값 계산과 컴파일시간에서의 결과값 계산이다.
(어떤 방법을 쓰던간에) 두 프로그램을 실행시키면, 어떤 것이 더 빠를것인가는 생각하지 않아도 후자가 빠르다. (전자의 실행시간은 O(n!), 후자는 O(1) 이다)
때문에 보통 메타프로그래밍은 컴파일시간을 희생시켜, 실행시간에서의 성능을 얻는다.