This is a problem from TsingHua University math competition for high school students.
Prove there exists only finite number of polynomials $f\in \mathbb{Z}[x]$ such that for any $x\in \mathbb{N}$ , $|f(x)|\le 2^x$.
My attempts: since $f(x)=o(2^x)$, $f$ can only be bounded when $x$ is small, for example $f(0)=0,1, \ \ f(1)=0,1,2, \cdot \cdot \cdot$. Thus using Lagrange interpolation it concludes that for any given $n\in \mathbb{N}$ the number for such polynomial is finite. But I don't know how to proceed from here.
Is my methods wrong or there's a better way? Also, I'd like to know something about the background of this problem. Thanks in advance.
Solution credits to Rui Yao: