Test/python

n의 배수

soo15 2023. 5. 19. 14:32

[문제 설명]

정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.


[제한사항]

2 ≤ num ≤ 100
2 ≤ n ≤ 9

 

[입출력 예]

num  n result
98  2 1
34 3 0


[입출력 예 설명]

입출력 예 #1)

98은 2의 배수이므로 1을 return합니다.

 

입출력 예 #2)

32는 3의 배수가 아니므로 0을 return합니다.

 


 

[나의 풀이]

def solution(num, n):
    if num % n == 0:
        return 1
    else:
        return 0

 


 

[설명]

1. num이 n의 배수 = num을 n으로 나눴을 때 나머지가 0

1) num이 n의 배수일 때

num = 15
n = 3
print(num % n)

Out[1]: 0

> 나머지가 항상 0이다.

 

 

2)  num이 n의 배수가 아닐 때

num = 17
n = 3
print(num % n)

Out[2]: 2

> 나머지가 항상 0이 아니다.

 

 

 

2. n의 배수일 때 1을 return, n의 배수가 아닐 때 0을 return하는 함수

def solution(num, n):
    if num % n == 0:
        return 1
    else:
        return 0

 

 

 


 

[다른 사람 풀이]

def solution(num, n):
    return int(not(num % n))

 

[설명]

1. num % n을 논리 연산자로 바꾸어 풀기

1) num이 n의 배수일 때

 

> 수가 0, [],''은 bool 연산의 결과로 False를 리턴한다.

bool(0)    # False
bool([])   # False
bool('')    # False

 

> 앞에 not을 붙이면 num이 n의 배수일 때 bool 연산의 결과로 True를 리턴한다.

num = 15
n = 3
print(bool(num % n)) # False
print(not(num % n))  # True

 

> not을 이용하여 True로 바꾼 이유 : True를 정수로 반환하면 아래와 같이 1이 되기 때문

num = 15
n = 3
print(not(num % n))         # True
print(int(not(num % n)))  # 1

 

 

 

2)  num이 n의 배수가 아닐 때

 

> 위와 같은 값은 bool 연산의 결과로 True를 리턴한다.

print(bool(3))		# True (수가 0이 아닐 때)
print(bool([1,2,3]))    # True (빈 리스트가 아닐 때)
print(bool('a'))		# True (빈 문자열이 아닐 때)

 

> 앞에 not을 붙이면 num이 n의 배수일 때 bool 연산의 결과로 False를 리턴한다.

num = 17
n = 3
print(bool(num % n)) # True
print(not(num % n))  # False

 

> not을 이용하여 False로 바꾼 이유 : False를 정수로 반환하면 0이 되기 때문

num = 17
n = 3
print(not(num % n))         # False
print(int(not(num % n)))  # 0

 

 

2. bool의 연산을 int로 바꾸는 함수 만들기

def solution(num, n):
    return int(not(num % n))