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))