
풀이
def solution(num_list):
result = 1
for num in num_list:
result *= num
if result > sum(num_list)**2:
return 0
else:
return 1
다른 풀이
def solution(num_list):
return int(sum(num_list) ** 2 >= eval('*'.join(map(str, num_list))))
eval()은 파이썬 내장 함수 중 하나로, 문자열에 포함된 파이썬 표현식을 실행하여 결과를 반환한다. 즉, 문자열로 표현된 파이썬 코드를 실행할 수 있게 해준다.
result = eval("2 + 3")
print(result)
# 출력 : 5
하지만 eval() 함수는 주어진 문자열을 실행할 때 보안상의 위험이 따르니 주의해야 한다. 특히 외부로부터의 입력을 직접적으로 eval() 함수에 전달하면 보안상 취약점이 발생할 수 있다. 따라서 안전한 사용을 위해 외부 입력을 받을 때는 꼭 필요한 경우가 아니라면 eval() 함수를 사용하지 않는 것이 좋다.
return문에 조건식을 사용하면 그 조건식의 참 / 거짓을 평가한다.
다른 풀이
from functools import reduce
def solution(num_list):
return int((reduce(lambda x, y: x * y, num_list)) < (sum(num_list) ** 2))
reduce() 함수는 functools 모듈에서 제공되며, 주어진 함수를 이터러블의 각 요소에 반복적으로 적용하여 하나의 값으로 줄인다.
functools.reduce(function, iterable, initializer)
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)
# 출력 : 120 (1 * 2 * 3 * 4 * 5)