프로그래밍 문제 풀이/코드업(파이썬)

코드업[CodeUp] Python 기초 100제 [6058번]

태은코딩 2023. 12. 27. 09:35

6058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기(py)

입력값
2개의 정수가 공백을 두고 입력된다.
출력값
두 값의 True / False 값이 모두 False 일 때만 True 를 출력하고, 그 외의 경우에는 False 를 출력한다.

 

입력 예시
0 0
출력 예시
True

 

정답 및 가능한 정답

a, b = map(int,input().split())
print(bool(a)==False and bool(b)==False)
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(not (a or b))

 

 

해설

bool 함수는 전달되는 변수에 어떤 값이 있으면 True를 반환, 없으면 False를 반환한다.
bool 함수에 값이 없는 0이나 0.0 빈 컨테이너, None인 경우에 False가 반환된다.

위 문제를 저는 3가지로 풀이해 봤습니다.
1. 비교연산자
== 와 and를 이용해서 두 값 모두 False 일 때 True를 출력하도록 하였다.

2. 비트 연산자
파이썬에서는 2진수의 비트 단위에서 활용하는 연산자를 제공한다.
& : AND 연산, 둘 다 참일 때 만족
| : OR 연산, 둘 중 하나만 참이어도 만족
^ : XOR 연산 : 둘 중 하나만 참일 때 만족
~ : NOT 연산 : 보수 연산(0과 1을 바꿈)
<< : 왼쪽 시프트 연산, 변수의 값을 왼쪽으로 지정한 비트 수만큼 이동
>> : 오른쪽 시프트 연산, 변수의 값을 오른쪽으로 지정한 비트 수만큼 이동

bool 값은 True일 때 1, False일 때 0이므로 비트 연산자를 사용 가능하다.
위 문제는 둘의 값이 모두 거짓일 때 참이므로 NOR 연산이다.
not(a | b)와 같다. 

**~(a | b)는 안 쓰는 이유
not은 1이면 False, 0이면 True를 출력하지만
~는 1이면 -2, 0이면 -1을 출력해버린다. 
and, or, not은 논리연산이다. 비트 연산과 다르다는 것을 인지해라.

3. 부울 함수식(Boolean Functions)
두 값이 모두 False일 때만 True를 출력하는 데에서 NOR 연산인 것을 알 수 있고
NOR 연산의 논리식은 (x+y)'의 형태라는 것을 알 수 있다.
그래서 not (a or b) 형태로 구현할 수 있다.