코드업 기초 100제 문제 056
# 두 가지의 참(1) 또는 거짓(0)이 입력될 때
# , 참/거짓이 서로 다를 때에만 참을 출력하는 프로그램을 작성해보자.
소스
더보기
a, b = map(int, input().split())
print(bool((a and not(b)) or (not(a) and b)))
위소스는 xor를 논리식으로 구현하라는 문제입니다. xor는 따로 없기 때문에 쓸 수 있는 not, and, or로 논리식을 만들 수 있습니다. xor의 논리식을 알고 있다면 그대로 쓰면 좋겠지만 기억이 안 날 경우도 카르노 표를 통해서도 문제를 풀 수 있습니다.
a\ b | 0 (b') | 1 (b) |
0 (a') | 0 | 1 |
1 (a) | 1 | 0 |
이것을 논리식으로 만들면 "ab'+a'b"가 됩니다. 이것을 소스로 구현할 경우 "(a and not(b)) or (not(a) and b)"가 됩니다. 이제 이것을 소스로 만들어주기만 하면 끝입니다.
참고
드 모르간, 분배 법칙
카르노 표
'파이썬 > 코트업 기초 100제' 카테고리의 다른 글
코드업 기초 100제 문제 058 (0) | 2022.01.24 |
---|---|
코드업 기초 100제 문제 057 (0) | 2022.01.24 |
코드업 기초 100제 문제 055 보너스 (0) | 2022.01.24 |
코드업 기초 100제 문제 055 (0) | 2022.01.24 |
코드업 기초 100제 문제 054 (0) | 2022.01.24 |