꿈은 데이터분석가, 취미는 계획

[Python] 프로그래머스 문풀 :: 짝수와 홀수 구분하기 본문

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