계산을 위해 개월이 없으면 모든 조합을 검토하는 것은 좋지 않습니다. 모든 숫자가 양수이면 모두 곱하면됩니다. 모두가 부정적인 경우에 당신은 그 (것)들의 수를 가지고 갈 것입니다. 건너 뛰려면 가장 큰 것을 건너 뛰십시오 (-2는 -5보다 큽니다). 믹스에 0을 추가하면 항상 이전의 모든 경우보다 나빠진 0이 반환됩니다. 양수가없고 0 또는 음수가 있으면 가장 큰 숫자를 취하십시오. 그것은 0 일 수도 있고, 음수 일 수도 있습니다.
def answer(xs):
mult = 1
valid = 0
for i in xs:
if i > 0:
mult *= i
valid = 1
negative = [i for i in xs if i<0]
negative.sort()
if(len(negative) & 1):
del negative[-1]
for i in negative:
mult *= i
valid = 1
if valid==0:
return max(xs)
return mult
여기에 몇 가지 테스트 케이스입니다
xs = [0]
print(xs,"->",answer(xs)) #[0] -> 0
xs = [-1]
print(xs,"->",answer(xs)) #[-1] -> -1
xs = [0,-1]
print(xs,"->",answer(xs)) #[0, -1] -> 0
xs = [-2,-3]
print(xs,"->",answer(xs)) #[-2, -3] -> 6
xs = [-2,-3,-4]
print(xs,"->",answer(xs)) #[-2, -3, -4] -> 12
xs = [-2,-3,0]
print(xs,"->",answer(xs)) #[-2, -3, 0] -> 6
xs = [-2,3]
print(xs,"->",answer(xs)) #[-2, 3] -> 3
스택 오버플로는 작동하지 않는 코드를 전문으로합니다. [codereview.se]에서이 질문을 할 수 있습니다. – usr2564301
"하나 또는 임의의 숫자"→ 어떤 숫자입니까? – Veedrac