-
2021-01-27] Concatenation of Consecutive Binary NumbersIT/자기계발 ( Leetcode ) 2021. 1. 27. 21:55반응형
오늘의 문제:
어제는 문제가 너무 어려웠고, 시간도 부족해서.. 결국 하루를 빼먹게 되었다.
하지만, coursera에서 algorithm 수업을 들으며, 해당 내용도 블로그에 적어볼 예정이라, 위안을 삼아보며
문제를 풀어보자. 문제예시를 보며 문제를 이해해보자.
예시에서 처럼 주어지는 n에 대해서 1~n 까지 2진수로 표현하여 나열한 2진수를 10진수로 변환하는 문제이다.
예시 2번을 보면,
n=3이고, 1~3까지의 숫자 1,2,3은 각각 2진수로 '1','10','11' 이며, 이를 나열한 '11011'을 10진수로 표현하면 27이다.
이후 값에 대해서 10의9승+7을 나눈 나머지 값을 반환하면 문제는 해결된다.
간단하게, n이 주어지면 for문을 돌면서 1부터 2진수로 만든 값을 문자열로 합해주면, 나열한 2진수의 값이 나올 것이고,
이를 10진수 ( int형 ) 으로 변경 후 나머지를 구하면 될 것 이다.
이를 코드로 다시 봐보도록 하자.
문제풀이)
class Solution: def concatenatedBinary(self, n: int) -> int: sum="" # 나열한 2진수를 구하기위한 변수 for i in range(1,n+1): # 1~n까지 for문 sum+=format(i,'b') # i에 대해 2진수로 변환하고 이를 합해준다. ans=int('0b'+sum,2) # 합쳐진 2진수에 대해 10진수로 변경. return ans%((10**9)+7) # 나머지를 구하고 값을 반환
반응형'IT > 자기계발 ( Leetcode )' 카테고리의 다른 글
2021-01-29] Vertical Order Traversal of a Binary Tree (0) 2021.01.29 2021-01-28] Smallest String With A Given Numeric Value (0) 2021.01.29 2020-01-25] Check If All 1's Are at Least Length K Places Away (0) 2021.01.26 2021-01-24] Merge k Sorted Lists (0) 2021.01.24 2021-01-23] Sort the Matrix Diagonally (0) 2021.01.23