티스토리 뷰
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
비트 논리 연산자를 좀 더 공부해야겠다. 멋있는 풀이다.
참고 자료
'Algorithm > Programmers' 카테고리의 다른 글
문자열을 정수로 바꾸기 (0) | 2020.02.08 |
---|---|
서울에서 김서방 찾기 (0) | 2020.02.04 |
평균 구하기 (0) | 2020.01.30 |
수박수박수박수박수박수? (0) | 2020.01.27 |
K번째 수 (0) | 2020.01.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Django 비밀번호 수정
- 북마크 어플리케이션
- Django 회원 정보 수정
- Redis
- Django 프로젝트 생성
- Django application
- Django 해시태그
- Django User
- Django 좋아요
- Django 로그인
- java
- Django 업로드
- Django 인스타그램
- 서점 어플리케이션
- Django 컬렉션
- Django 댓글
- python
- Django
- 파이썬
- Django 검색
- 장고
- Redis Cache
- Django 북마크
- Django 회원가입
- Django 팔로우
- query parameter
- Django 로그아웃
- MySQL
- Django 어플리케이션
- Django Instagram
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함