Programming/leetcode

1680. Concatenation of Consecutive Binary Numbers

홍열 2021. 1. 28. 09:09
728x90

주어진 수를 2진수로 변환하면서 나오는 값들을 하나로 합쳐 다시 그 값을 10진수로 변환하는 문제 

 

예를 들어, 3이면 아래 표와 같이 11101이 나오게 된다(1부터 3까지의 2진수를 하나로 합치는 것)

10진수 2진수
1 1
2 10
3 11

11101을 다시 10진수로 변환하면 27이 나온다. 

파이썬에서 진법 문제를 다룰수 있는지를 보는 문제같다. 

 

풀고나서 Discuss를 보니 신기한 방법으로 푼 애들도 있었다. 

 

    def concatenatedBinary(self, n: int) -> int:
        s = ""
        for i in range(1, n+1):
            s += format(i, 'b')
        s = '0b'+ s
        return int(s, 2) % (10 ** 9 + 7)

  

참고로 진버과 관련해서는 아래 블로그를 참고하였다. 

www.daleseo.com/python-int-bases/

 

[파이썬] 2진수, 8진수, 16진수 다루기

Engineering Blog by Dale Seo

www.daleseo.com