
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
| num | return |
|---|---|
| 3 | "Odd" |
| 4 | "Even" |
def solution(num):
return "Even" if num % 2 == 0 else "Odd"
저는 단순히 modulo 연산(%)을 통해 홀수인지 짝수인지 판별했습니다.
한 줄로 if-else 문을 처리하는 python의 삼항 연산자를 사용하면 간결하게 작성할 수 있습니다.
def solution(num):
return ["Even", "Odd"][num & 1]
위 코드는 리스트의 index를 입력과 1의 AND 연산 결과로 사용했습니다.
만약 num 이 짝수라면 이진변환을 했을 때 마지막 자리가 0이기 때문에 num & 1 의 결과가 0이 되어 0번째 원소인 "Even"을 반환할 것이고, num 이 홀수라면 num & 1 의 결과가 1이 되어 1번째 원소인 "Odd"를 반환할 것입니다.
&는 AND 비트 연산을 한 것인데, 동작 방식을 간단히 살펴보면 아래와 같습니다.
>>> 3 & 6
2
두 수를 이진수로 변환합니다.
3 -> 11
6 -> 110
비트 단위로 AND 연산을 합니다.
자리: 1 & 0 = 0
자리: 1 & 1 = 1
자리: 0 & 1 = 0
이진수로 010 이라는 결과가 나오는데, 출력은 자동으로 십진수로 변환되기 때문에 2가 출력된 것입니다.
따라서, 문제로 돌아가서, 홀수는 항상 자리가 1이고 짝수는 0이기 때문에 1과 AND 비트 연산을 해줌으로써 간단하게 홀수인지 짝수인지 판별할 수 있음을 알 수 있습니다.
질문이나 오류 수정은 댓글로 남겨주세요!