[ Contents ]
1. 문제 (링크 참조)
12813번: 이진수 연산
총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
2. 문제 풀이
이진수 A, B를 [and, or, xor, not A, not B] 연산하는 문제입니다.
2022.01.24 - [PL (Programming Language)/Python] - [Python] 파이썬 연산자와 자동 형변환(캐스팅, Casting)
[Python] 파이썬 연산자와 자동 형변환(캐스팅, Casting)
2022.01.23 - [PL (Programming Language)/Python] - [Python] 변수(Variable)와 자료형(Data type) [Python] 변수(Variable)와 자료형(Data type) 2022.01.23 - [PL (Programming Language)/Python] - [Python] p..
star7sss.tistory.com
위 글의 논리연산자를 이용하면 쉽게 풀 수 있습니다. 논리 연산자는 True, False 뿐만 아니라 0(False), 1(True) 비트 연산도 가능합니다. 따라서 논리연산자를 이용하면 이진수 연산을 할 수 있습니다.
3. 코드
# 입력
A = map(int, input())
B = map(int, input())
# 계산
_and, _or, _xor, _notA, _notB = '', '', '', '', ''
for a, b in zip(A, B):
_and += str(a and b) # A & B
_or += str(a or b)
_xor += str(a ^ b)
_notA += str(int(not a))
_notB += str(int(not b))
# 출력
print(_and)
print(_or)
print(_xor)
print(_notA)
print(_notB)
논리연산자를 이용해서 A, B를 비트단위로 계산합니다. zip() 함수를 사용하면 A, B 1비트씩 꺼내서 연산할 수 있습니다.
not a와 not b는 True/False로 반환되므로 int형으로 한번 더 형 변환해줍니다.
'Algorithm' 카테고리의 다른 글
[탐색/BFS] 백준 16953 A → B - 파이썬(Python) (1) | 2022.05.04 |
---|---|
[탐색/DFS] 백준 11725 트리의 부모 찾기 - 파이썬(Python) (0) | 2022.05.03 |
[구현/수학] 백준 8741 이진수 합 - 파이썬(Python) (0) | 2022.05.01 |
[구현/수학] 백준 14656 조교는 새디스트야!! - 파이썬(Python) (0) | 2022.04.30 |
[구현/수학] 백준 10996 별 찍기 - 21 - 파이썬(Python) (0) | 2022.04.29 |
댓글