[python]음양 더하기

eunvi·2021년 12월 6일
0

프로그래머스

목록 보기
7/25
post-thumbnail

월간 코드 챌린지 시즌2>음양 더하기

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

[제한사항]

  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

[입출력 예]

[입출력 예 설명]

입출력 예 #1

  • signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
  • 따라서 세 수의 합인 9를 return 해야 합니다.

입출력 예 #2

  • signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
  • 따라서 세 수의 합인 0을 return 해야 합니다.

나의 풀이

생각해보기!

def solution(absolutes, signs):
    true,false = +1,-1
    answer = sum(list(map(lambda i:+absolutes[i] if signs[i] == true else -absolutes[i],range(len(signs)))))
    return answer
  • true 와 false 에 각각 +1과 -1을 지정했다.
    • 다른 분의 풀이를 보면 지정하지않고 파이썬 예약어인 True와 False 그 자체를 if문에 활용했다.
  • map(함수,리스트) : 리스트의 요소를 지정된 함수로 처리해주는 함수
  • 참고로 입출력 예를 실행할 때 true, false를 True, False로 바꿔 실행해야 값이 출력된다.

lambda 함수 사용법을 헤맸지만 무난하게 통과했다.😅

다른 사람의 풀이 #1

def solution(absolutes, signs):
    answer=0
    for absolute,sign in zip(absolutes,signs):
        if sign:
            answer+=absolute
        else:
            answer-=absolute
    return answer

참고하세요!

  • zip 함수로 자료형 묶기

다른 사람의 풀이 #2

def solution(absolutes, signs):
    return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))

참고하세요!

  • 위의 풀이를 한 줄로 나타냈다!
profile
please study

0개의 댓글

관련 채용 정보