리트코드, Hamming Distance_해밍 거리
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 |