6057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기(설명)(py)
입력값 |
2개의 정수가 공백을 두고 입력된다. |
출력값 |
두 값의 True / False 값이 서로 같을 경우만 True 를 출력하고, 그 외의 경우에는 False 를 출력한다. |
입력 예시 |
0 0 |
출력 예시 |
True |
정답 및 가능한 정답
a, b = map(int,input().split())
print(bool(a)==bool(b))
a, b = map(int,input().split())
a=bool(a)
b=bool(b)
print(not (a ^ b))
a, b = map(int,input().split())
a=bool(a)
b=bool(b)
print((a and b) or (not a and not b))
해설
bool 함수는 전달되는 변수에 어떤 값이 있으면 True를 반환, 없으면 False를 반환한다.
bool 함수에 값이 없는 0이나 0.0 빈 컨테이너, None인 경우에 False가 반환된다.
위 문제를 저는 3가지로 풀이해 봤습니다.
1. 비교연산자
== 을 이용해서 두 값이 같을 때 True를 출력하도록 하였다.
2. 비트 연산자
파이썬에서는 2진수의 비트 단위에서 활용하는 연산자를 제공한다.
& : AND 연산, 둘 다 참일 때 만족
| : OR 연산, 둘 중 하나만 참이어도 만족
^ : XOR 연산 : 둘 중 하나만 참일 때 만족
~ : NOT 연산 : 보수 연산(0과 1을 바꿈)
<< : 왼쪽 시프트 연산, 변수의 값을 왼쪽으로 지정한 비트 수만큼 이동
>> : 오른쪽 시프트 연산, 변수의 값을 오른쪽으로 지정한 비트 수만큼 이동
bool 값은 True일 때 1, False일 때 0이므로 비트 연산자를 사용 가능하다.
위 문제는 둘의 값이 같을 경우 참이므로 XNOR 연산이다.
not(a^b)와 같다.
3. 부울 함수식(Boolean Functions)
두 값이 서로 같을 경우에만 True를 출력하는 데에서 XNOR 연산(equivalence 연산)인 것을 알 수 있고
XNOR 연산의 논리식은 (x'y+xy')'의 형태로 xy + x'y' 형태라는 것을 알 수 있다.
그래서 (a and b) or (not a and not b) 형태로 구현할 수 있다.