Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 1.81 KB

풀이_LC476.md

File metadata and controls

32 lines (24 loc) · 1.81 KB

🌂 LeetCode 459. Repeated Substring Pattern

  • Date : 2021.09.26(일)
  • Time : 20분

Problem

  • The complement of an integer is the integer you get when you flip all the 0's to 1's and all the 1's to 0's in its binary representation.
    • For example, The integer 5 is "101" in binary and its complement is "010" which is the integer 2.
  • Given an integer num, return its complement.

Constraints

  • 1 <= num < 2^31

Example

  • Input: num = 5
  • Output: 2
  • Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.

풀이

    def findComplement(self, num: int) -> int:
        num = list(bin(num))[2:]
        for i,n in enumerate(num):
            num[i] = str(1-int(n))
        return int("".join(num),2)

: 이 문제는 주어진 숫자 num을 2진수로 변환 후 보수로 변경 후 다시 10진수 값으로 변경해 답을 찾는 것이다. 그렇기 때문에 첫번째로는 num을 2진수로 변경해서 list로 넣어주었다. python 에서 bin은 전달받은 integer 혹은 long integer 자료형의 값을 이진수(binary) 문자열로 돌려주는 내장함수이다. 앞자리에 2진수임을 나타내는 '0b'가 붙기 때문에 [2:]를 이용해서 떼고 배열에 넣어주었다. 그리고 이제 for문을 이용해서 한자리 씩 검사를 한다. 여기서는 enumerate을 사용했는데 enumerate를 사용하면 (인덱스, 요소)가 출력되기 된다. 그렇기 때문에 여기서 i는 인덱스 , n은 요소값이 되는 것이다. for문을 통해 각각 값에 대해 보수로 변환해준다. 보수는 0->1 1->0으로 변환시키면 된다. 그 이후 join을 통해 배열에 값을 하나로 합쳐준 후 2진수를 다시 10진수로 변경해주면 끝이다.