본문 바로가기

개발/Algorithm

[리트코드] Hamming Distance(python)

리트코드, Hamming Distance_해밍 거리

 

Hamming Distance - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

TL;DR

  • 비트 연산자(Bitwise operator)

문제 요약

1. '해밍 거리'는 두 숫자 사이의 비트 자릿수의 위치가 다른 개수를 의미한다.
2. 주어진 두 정수 x와 y 사이의 해밍 거리를 반환하는 함수를 작성하라.

 

- 두 숫자를 이진수 형태로 바꾸고 자릿수 별로 비교해서 다른 숫자를 반환하는 함수를 작성하면 된다.

- 같은 값은 0으로, 다른 값은 1로 만드는 XOR(베타적 논리합)의 성질 사용하면 문제를 쉽게 해결할 수 있다.

입출력 형태

입출력 예시

풀이

두 수를 XOR하게 되면 연산의 특징에 의해 서로 다른 자릿수에만 1이 등장하게 된다. 같은 경우는 0이 된다. 따라서 이 문제는 두 수를 이진수로 바꾸고 XOR 연산을 진행한 뒤 존재하는 1의 개수를 반환하면 된다.

class Solution:
    def hammingDistance(self, x: int, y: int) -> int:
        return bin(x ^ y).count('1')

 

두 수 x와 y를 ^(xor) 연산을 진행한다. 이 결과를 bin으로 감싸 이진수 형태로 변환한다.

- bin()함수는 정수를 매개변수로 받아 해당 정수를 이진수로 변환한 값을 문자열으로 반환한다.

문자열으로 반환하기 때문에 count() 함수 내에 1이 아닌 '1'이 들어가야 정답을 얻을 수 있다.

반응형

'개발 > Algorithm' 카테고리의 다른 글

[백준] 촌수계산(python)  (0) 2021.10.26
[백준] 연결 요소의 개수(python)  (0) 2021.10.24
[리트코드] Single Number(python)  (0) 2021.10.22
[백준] 제곱근(python)  (0) 2021.10.20
[리트코드] Search a 2D Matrix 2(python)  (0) 2021.10.19