어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
def solution(absolutes, signs):
answer = 0
for i in range(len(signs)):
if signs[i] == True:
answer += absolutes[i]
else:
answer -= absolutes[i]
return answer
answer는 실제 정수들의 합을 담기 위한 변수로 설정했다.
absolutes와 signs의 요소 수가 같으니까, for 반복문은 더 적기 쉬운 signs의 수 만큼 반복하도록 했다. (absolutes로 적어도 결과는 같음)
signs의 요소가 True라면, 정수가 양수라는 뜻이므로 answer 변수에 그대로 더하고
signs의 요소가 False라면, 정수가 음수라는 뜻으므로 answer 변수에서 빼도록 했다.
파이썬에서는 true, TRUE 다 안되고 True만 !! False만!!! 가능하다. 이번에도 실수해서 오류가 났으므로 계속 주의하자!
def solution(absolutes, signs):
for i in range (len(absolutes)):
if signs[i] == False:
absolutes[i] = -absolutes[i]
return sum(absolutes)
sum
을 사용해 absolutes를 모두 더하는 식을 썼다.def solution(absolutes, signs):
return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
a = ['one', 'two', 'three']
b = ['1', '2', '3']
list(zip(a, b))
→ [('one', '1'), ('two', '2'), ('three', '3')]
absolutes와 signs를 zip 함수를 이용해서 묶어주고 for 반복문을 사용했다.