어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
def solution(absolutes, signs):
for i in range(len(absolutes)):
if signs[i] == False:
absolutes[i] = -absolutes[i]
return sum(absolutes)
코드설명에 앞서 문제를 읽고 이런저런 생각을 많이 했다. 중첩 for문을 써야하나? 아님 index 함수를 쓸까? zip() 함수를 쓸까? 등등 정말 많은 생각들이 스쳐갔지만 결국 난 그냥 for문과 if문을 사용해 문제를 풀었다.(나 생각 왜 한거지...?)
기본이 최고인겨~ ㅋㅋㅋㅋ 암튼 설명 들어간다.
absolutes와 signs의 길이가 동일함을 이용해 for문으로 작성한다. for문에서 i를 print 해보면 0,1,2 로 나올것이다. 이것을 이용해 다음 코드를 작성해준다.
if문에서 signs[i]는 각각 signs[0], signs[1], signs[2]로 나타난다. 이것을 print하게 되면 signs에 담긴 요소들이 나온다. 따라서 singns[i]가 False 인것만 absolutes 요소에서 찾아서 부호를 -로 바꿔주면 되기 때문에
if signs[i] == False:
absolutes[i] = -absolutes[i]
위와 같은 코드로 작성해주면 된다.