티스토리 뷰

Algorithm/Programmers

짝수와 홀수

Liiot 2020. 2. 4. 23:01

1. 문제

문제 설명

정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요.

제한 조건

  • num은 int 범위의 정수입니다.
  • 0은 짝수입니다.

입출력 예

num return
3 Odd
4 Even

 

2. 풀이 과정

def solution(num):
    answer = "Even" if num % 2 == 0 else "Odd"
    return answer

 

3. 다른 사람의 풀이

def evenOrOdd(num):
    return ["Even", "Odd"][num & 1]

비트 논리 연산자를 이용한 풀이이다.

 

비트 논리 연산자란 2진수의 각 자릿수를 AND, OR, XOR, NOT 연산을 하는 것이다.

 

그 중에서도 & 연산자는 각 자릿수를 비교했을 때, 두 개 모두 1이어야 1이 나온다.

 

다음은 & 연산자에 대한 진리표이다.

 

연산자 비트1 비트2 결과
& 0 0 0
  0 1 0
  1 0 0
  1 1 1

 

따라서, 다음 풀이를 찬찬히 살펴보면 다음과 같다.

num = 3
print(num & 1)
# 3을 2진수로 바꾸면 -> 11
# 1을 2진수로 바꾸면 -> 01
# & 연산자 결과 -> 01
>>> 1

return ["Even", "Odd"][1]
# 결과 -> Odd


num = 8
print(num & 1)
# 8을 2진수로 바꾸면 -> 1000
# 1을 2진수로 바꾸면 -> 0001
# & 연산자 결과 -> 0000
>>> 0

return ["Even", "Odd"][0]
# 결과 -> Even

 

비트 논리 연산자를 좀 더 공부해야겠다. 멋있는 풀이다.

 

 


 

 

참고 자료

 

파이썬 코딩 도장: 47.1 비트 연산자 사용하기

Unit 47. 부록 이제부터 부록입니다. 부록은 참고삼아 알아둘 내용, 자주 사용하지 않는 기능, 내용이 다소 어려운 부분, 파이썬을 어느 정도 알고난 뒤에 봐야할 내용 등을 담았습니다. 여기에 나오는 내용을 모두 익힐 필요는 없으며 필요할 때마다 찾아보면 됩니다. 47.1 비트 연산자 사용하기 컴퓨터는 2진수(0과 1)를 사용하므로 대부분의 프로그래밍 언어는 2진수를 다루는 연산자를 제공합니다. 그런데 2진수로 변환하는 방법을 잘 모른다면 어떻게 해야

dojang.io

 

'Algorithm > Programmers' 카테고리의 다른 글

문자열을 정수로 바꾸기  (0) 2020.02.08
서울에서 김서방 찾기  (0) 2020.02.04
평균 구하기  (0) 2020.01.30
수박수박수박수박수박수?  (0) 2020.01.27
K번째 수  (0) 2020.01.26
댓글