원소들의 곱과 합

장현웅·2024년 4월 3일

풀이

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)

0개의 댓글