본문 바로가기
코딩테스트/python

프로그래머스 lv1 음양더하기

by 앵유짱 2023. 8. 25.

 

 

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

 

 

입출력 예

absolutes signs result
[4,7,12] [true,false,true] 9
[1,2,3] [false,false,true] 0

 


 

나의 아기같은 코드

def solution(absolutes, signs):
    answer = 0
    sum_list = []
    
    # signs 값 판별 (T/F)
    for k,v in enumerate(signs) :
        if v == True :
        	
            # True이면 값을 리스트에 저장
            sum_list.append(absolutes[k])
        
        else :
        	# False이면 값에 -1을 곱해서 리스트에 저장
            sum_list.append(absolutes[k]*-1)
    
    # 리스트 sum해주기
    answer = sum(sum_list)
    
    return answer

 

구경하다 가져온 고수의 코드

def solution(absolutes, signs):
    answer = int()

    for value, positive in zip(absolutes, signs):
        answer += value if positive else -value

    return answer

 

zip으로 positive 를 구분해서 value에 -만 붙여준게 참 깔끔하다

나도 처음에는 zip으로 시도했으나 아직 딕셔너리에 약해서 ㅎㄸㅎㄸ코드로 썻다

딕셔너리의 장인이 되자!