The first part (without resorting to graphs)
The number of binary digits of a positive integer $n$ is $\lfloor\log_2 n\rfloor +1 $, and for decimal it is $\lfloor\log_{10} n\rfloor + 1$. Therefore we're finding the value of $n$ that satisfies $\lfloor\log_2 n\rfloor +1 = 3(\lfloor\log_{10} n\rfloor +1) $.
Using a power of ten, as in $n=10^x$ will give the lower bound of ratio of the binary and decimal digits in the range $[10^x, 10^{x+1}) $. Plugging it into the equation above gives the following result:
$$
\lfloor\log_2 10^x \rfloor + 1 = 3( \lfloor\log_{10} 10^x \rfloor + 1) = 3(x+1) \\
\lfloor x \log_2 10 \rfloor = 3x + 2 \\
x \log_2 10 < 3x + 3 \\
x < \frac{3}{\log_2 10 - 3} \approx 9.3
$$
Indeed $10^9$ has ten digits in decimal and 30 digits in binary. Then we can conclude that the number we're trying to find is the maximal number that has 30 digits in binary, which is
$2^{30}-1 = 1073741823$
Higher than that, the digit count ratio is too high for both $2^{30} \le n < 10^{10}$ (31+ binary vs. 10 decimal) and $10^{10} \le n$ (as proven using powers of 10).
The second part (fast brute-force program)
from itertools import combinations_with_replacement as cwr
collect = {}
for r in range(1,10):
for comb in cwr([10**i for i in range(8)], r):
n = sum(comb) + 10**9
if n >= 2**30: continue
b = bin(n)[2:]
if b.count('1') == 3 * (r+1):
collect[n] = b
print(len(collect), 'solutions found')
for n in sorted(collect):
print(n, collect[n])
Try it online!
It finds 230 solutions in the range $10^9 \le n < 2^{30}$, the maximum of which confirms Paul Panzer's answer of
$ 1040100000 = 111101111111101010101010100000_2 $