Python/파이썬 문풀
[Python] 프로그래머스 문풀 :: 짝수와 홀수 구분하기
data_2080
2024. 1. 11. 23:01
728x90
출처: [프로그래머스 스쿨 - 코딩테스트 연습 - Python3_level1]
링크:https://school.programmers.co.kr/learn/courses/30/lessons/12937
문제: 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수를 작성
1. if - else 사용
2로 나눴을 때 0이면 "Even", 홀수면 "Odd"를 반환
def solution(num):
return "Even" if num % 2 == 0 else "Odd"
def solution (num):
return "Odd" if num%2 else "Even"
2. &연산자와 인덱싱 사용
&는 비트 단위로 비교, 각 비트 위치에서 비교하여 모두 1일 때만 1을 반환(AND를 사용하면 x)
1) num&1 실행
5 (이진수: 101) & 1 (이진수: 001) => 001로 1을 반환(홀수는 마지막 비트가 항상1)
4 (이진수: 100) & 1 (이진수: 001) => 000로 0을 반환 (짝수는 마지막 비트가 항상0)
2) 인덱싱으로 값 찾기
["Even", "Odd"][0] : 0 번째 값인 "Even"을 반환
["Even", "Odd", "C" ][3]: 리스트 인덱싱이므로 3번째인 "C"를 반환
def solution(num):
return ["Even", "Odd"][num&1]
3. 최종정리
첫 번째 코드는 나머지 연산을 사용하므로 연산 비용이 높음
두 번째 코드는 비트 연산을 사용하여 연산 비용이 낮고 빠르게 동작하므로 더 효율적
728x90