[python 파이썬] 백준 12813번 이진수연산
2021. 3. 2. 17:38ㆍAlgorithm/BOJ
반응형
이문제는 비트마스크 문제이다.
기본적인 비트연산자를 이용한 문제인데 not 연산자를 파악하는 데 시간이 걸렸다.
일반적인 not 연산자(~)를 쓰면 결과가 0b0100 -> -0b0101 이런식으로 나와서 not연산자를 사용하지 못했다.
그래서 1의 보수쓰는 법으로 풀었다.
~a를 구하기 위해서 (a가 세자리라면)
a^111(mask) 이렇게 xor 연산을 사용해 구하면 된다.
ex) a=101
101^111=010
mask값을 구하기 위해서는 이진수가 길이를 알아야하는데 문제에서 100000으로 주어졌기에 이용해서 풀면 된다.
a = int(input(),2) #2진수 입력을 10진수로 받기
b = int(input(),2)
n = 100000
mask = 2 ** n - 1
# print(type(bin(a|b))) #str
# 자리수 맞춰주기
print(bin(a&b)[2:].zfill(n)) # 십진수끼리 & 비트연산자하면 연산결과후의 십진수를 출력하는데 그걸 이진수로 바꿔줌
print(bin(a|b)[2:].zfill(n))
print(bin(a^b)[2:].zfill(n))
print(bin(a^mask)[2:].zfill(n))
print(bin(b^mask)[2:].zfill(n))
참고
이진수 입력 방법
10진수->2진수
비트연산자
not 연산
문자열앞에 0채우기
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[python 파이썬] 백준 2644번 촌수계산 (0) | 2021.03.10 |
---|---|
[python 파이썬] 백준 1012번 유기농배추 (0) | 2021.03.09 |
[python 파이썬] 백준 11723번 집합 (0) | 2021.03.02 |
[python 파이썬] 백준 2667번 단지번호붙이기 (0) | 2021.02.25 |
[python 파이썬] 백준 2606번 바이러스 (0) | 2021.02.25 |