본문 바로가기
알고리즘

[BAEKJOON] 12813 이진수 연산

by mAlfred 2025. 7. 11.
반응형

문제

총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 이진수 A, 둘째 줄에 이진수 B가 주어진다. 두 이진수의 길이는 모두 100,000이다. 예제의 경우에만 길이가 10이며, 예제는 채점하지 않는다.

출력

첫째 줄부터 한 줄에 하나씩 차례대로 A & B, A | B, A ^ B, ~A, ~B를 출력한다.

예제 입력 1 

0001011000
0000101111

예제 출력 1 

0000001000
0001111111
0001110111
1110100111
1111010000

먼가 코드가 맘에 안든다...

 

a = input()
b = input()

andp = ''
orp = ''
xorp = ''
notap = ''
notbp = ''

for i in range(len(a)):
    q = int(a[i]) + int(b[i])
    if q == 2:
        andp += str(q-1)
        orp += str(q-1)
        xorp += str(q-2)
    elif q == 0:
        andp += str(q)
        orp += str(q)
        xorp += str(q)
    elif q == 1:  # 1
        andp += str(q-1)
        orp += str(q)
        xorp += str(q)
    
    notap += str(int(not(int(a[i]))))
    notbp += str(int(not(int(b[i]))))


print(andp)
print(orp)
print(xorp)
print(notap)
print(notbp)

 

 

더 쉬운 방법이 있을 것 같은데...

 

반응형

'알고리즘' 카테고리의 다른 글

[BAEKJOON] 14935 FA  (0) 2025.07.16
[BAEKJOON] 2839 설탕 배달  (1) 2025.07.12
[BAEKJOON] 15633 Fan Death  (0) 2025.07.10
[BAEKJOON] 5300 Fill the Rowboats!  (0) 2025.07.02
[BAEKJOON] 30454 얼룩말을 찾아라!  (0) 2025.06.27