algo lev-1 짝수와 홀수 (python)

1 minute read

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

출처 : 프로그래머스 Level1

내가 푼 풀이

2로 나눴을 때 나머지가 0 이면 짝수, 아니면 홀수

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

2로 나눴을 때 나머지가 1이면 True를 반환하기 때문에 (Bool 자료형), 1을 반환할 경우 홀수 아니면 짝수

def solution(num):
    if num % 2:
        return 'Odd'
    else:
        return 'Even'
  • 불(bool) 자료형
    • 참(True)과 거짓(False)의 두 가지 값을 가지고 있는 자료형
    • 참 : 1 , 비어있지 않은 문자열,리스트, 튜플 딕셔너리 등등 (ex. python, [1,2,3])
    • 거짓 : 0, None, 비어있는 문자열, 리스트, 튜플, 딕셔너리 등 (“”, [], (), {})

다른 사람의 풀이

def solution(num):
     return num % 2 and "Odd" or "Even"

and 는 둘 다 참일 때, or은 둘 중에 하나라도 참일 때 ‘참’

ex. 만약 num = 10일 경우

1) num % 2 == 0 (거짓)

2) num % 2 == 0 (거짓) and “Odd”(참) –> 거짓 and 참 = 거짓

3) 거짓 or “Even”(참) –> 거짓 or 참 = 참

4) 참의 결과인 “Even”을 반환

왜 num%2의 결과가 아닌 문자열들이 결과로 나오는지 궁금해서 하나하나 찍어보았다. and는 앞 뒤 순서를 바꾸면 다른 결과가 출력되었다. 근데 또 or의 경우는 다른 점이 없었다. 흐음…!?

num = 11
print( num % 2 and "Odd")  # Odd
print( "Odd" and num % 2)  # 1 (num%2)

# 이때 num % 2 == 1 (True)

print( num % 2 and "Odd" or "Even")  # Odd
print("Odd" and num % 2 or "Even")  # 1

num = 10
print( num % 2 or "Even")  # Even
print( "Even" or num % 2)  # Even

# 이때 num % 2 == 0 (Flase)

print( num % 2 and "Odd" or "Even") # Even
print("Odd" and num % 2 or "Even")  # Even

?? 그냥 참을 만나면 바로 반환하는 것인가..??? 흑흑 잘 모르겠다.

배운점

1) 연산자 우선 순위 not > and > or

Categories:

Updated:

Comments