본문 바로가기
Algorithm

[구현/수학] 백준 12813 이진수 연산 - 파이썬(Python)

by jangThang 2022. 5. 2.
반응형

백준 온라인 저지

 

[ 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형으로 한번 더 형 변환해줍니다.

     

    star가 되고나서 Tistory

    반응형

    댓글