본문 바로가기

2021 파이썬 챌린지

실력테스트 2. 음양 더하기

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

 

def solution(absolutes, signs): # for문과 if문을 사용했다 가장 빠르고 가독성이 좋다
    sum = 0
    for i in range(len(signs)):
        if signs[i]: # signs[i]  값 자체가 True다
            sum += absolutes[i] 
        else:
            sum -= absolutes[i]

    return sum
def solution(absolutes, signs): # 위의 것을 줄임
    return sum(absolutes[i] if signs[i] else -absolutes[i] for i in range(len(signs)))
def solution(absolutes, signs): # 다 더하고 false인 부분을 빼주는 방식
    sum = 0
    for i in range(len(signs)):
        sum += absolutes[i]

        if not(signs[i]):
            sum -= absolutes[i]*2

    return sum
def solution(absolutes, signs): # signs값에 따라서 -1을 곱할지 말지 결정
    answer = 0
    
    for i,bools  in enumerate(signs):
        n = 1
        if not(bools):
            n = -1
        answer += absolutes[i] * n
    return answer
def solution(absolutes, signs):# 위의 것을 줄임
    answer = 0

    for i,bools  in enumerate(signs):
        answer += absolutes[i] if bools else -absolutes[i]
    return answer
def solution(absolutes, signs):# 위의 것을 줄임        
    return sum(absolutes[i] if bools else -absolutes[i] for i,bools  in enumerate(signs))
from functools import reduce #reduce와 zip을 사용해서 조건에 맞게 더할지 뺄지 정함 *가장 느림*

def solution(absolutes, signs): 
    return reduce(lambda x,y: x + y[0] if y[1] else x - y[0] ,zip(absolutes,signs),0)

 

출처: https://programmers.co.kr/learn/courses/30/lessons/76501

 

코딩테스트 연습 - 음양 더하기

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

programmers.co.kr

 

'2021 파이썬 챌린지' 카테고리의 다른 글

2021.07.02 2일차 문제 예시답안  (0) 2021.07.03
2021.07.02 2일차 문제  (0) 2021.07.02
2021.07.01 1일차 문제 예시답안  (0) 2021.07.02
2021.07.01 1일차 문제  (0) 2021.07.01
실력테스트 1. 짝수와 홀수  (0) 2021.06.26