[CodeUp/코드업] Python 기초 100제 , 코드업 파이썬 6056 , 코드업 6056번 , 코드업 6056 , 논리연산
문제 출처
https://www.codeup.kr/problem.php?id=6055
-----------------------------------------------------------------------------------------------------------------------------
이 문제 코드 짜는게 약간 헷갈릴수도 있다.
불값이 서로 다를때만 True? 하나가 Fasle 하나가 True일때 True를 출력해야하는데,
그러려면 OR연산자를 사용해야한다. 그런데 OR연산자를 사용하면 둘다 True일때도 True를 출력해버린다.
이러면 안되는데... 그렇다면 두 불값이 같을때도 Fasle 를 출력하는 연산이 추가적으로 필요한걸까?
이럴떄는 not연산자를 사용해보자.
자 우선 True 와 True를 받았다 가정하자. 여기서 False를 출력해야하는데,
두 값을 and 로 받고 결과값에 Not을 붙이는 계산은 False False 를 받았을때 문제가 생긴다.
ex)
not(True and True) = False
not(False and False) = True
그렇다면 한쪽 불값에 not 을 붙이고 and and 연산을 한다면?
ex)
{True and (not True)} and {(not True) and (True)} = Fasle
{False and (not False)} and {(not False) and False)} = False
오 연산이 된다.
그렇다면 값이 서로 다를때도 되는지 살펴보자
ex)
{True and (not False)} and {(not True) and False} = False
{False and (not True)} and {(not False) and True} = False
아 값이 서로 다를때는 True 를 출력해야하는데 똑같이 False를 출력해서 안된다.
그렇다면 가운데 연산을 OR 로 바꾼다면??
ex)
{True and (not True)} or {(not True) and (True)} = False
{False and (not False)} or {(not False) and False)} = False
{True and (not False)} or {(not True) and False} = True
{False and (not True)} or {(not False) and True} = True
됐다.
이렇게 연산자를 작성하면 된다.
이런 논리 연산자를 XOR 이라 칭한다.
* XOR 연산
A | B | A XOR B |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
XOR 연산자는 불값이 서로 같으면 False, 불값이 서로 다르면 True 를 출력하는 연산자이다.
-----------------------------------------------------------------------------------------------------------------------------
정답