-
[백준] 12813. 이진수 연산 - Python3Problem Solving 2023. 2. 16. 22:41
문제 설명
이진수 두 개가 주어질 때, &, |, ^, ~ 연산의 결과를 출력하는 문제
https://www.acmicpc.net/problem/12813
12813번: 이진수 연산
총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
- 알고리즘 분류 - 문자열
- 난이도 - 브론즈2
관련 개념
비트 연산 - AND, OR, XOR, NOT
접근 방법
AND, OR, XOR은 입력된 이진수를 연산자 하나로 바로 연산 할 수 있도록 십진수 정수로 변환한 뒤, bin 함수로 이진수로 만들고 남은 앞공간은 zfill 함수를 이용해 0으로 채워줬다.
NOT 연산은 bin 함수를 쓰려니 파이썬은 음수를 자동으로 보수로 변환하여 출력해주기 때문에 오히려 번거로웠다. 그래서 문자열 글자 하나하나를 int로 변환해 1에서 빼준 값을 각각 출력해줬다.
답안 코드
메모리: 31388 KB , 시간: 192 ms, 코드 길이: 278 B
A = input() B = input() a = int(A, 2) b = int(B, 2) print(bin(a&b)[2:].zfill(len(A))) print(bin(a|b)[2:].zfill(len(A))) print(bin(a^b)[2:].zfill(len(A))) for i in range(len(A)): print(1-int(A[i]), end='') print() for i in range(len(B)): print(1-int(B[i]), end='') print()
'Problem Solving' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 - Python3 (0) 2023.02.20 [백준] 25330. SHOW ME THE DUNGEON - Python3 (0) 2023.02.17 [백준] 25332. 수들의 합 8 - Python3 (0) 2023.02.14 [백준] 5588. 별자리 찾기 - Python3 (0) 2023.02.07 [백준] 14425. 문자열 집합 - Python3 (0) 2023.02.06