본문 바로가기

알고리즘 & 코딩테스트/코딩테스트

Programmers Lv.1 "음양 더하기"

Programmers Lv.1 "음양 더하기", 월간 코드 챌린지 시즌 2, 정답률 84%

요 문제는 특이한 유형이라고 볼 수 있다.
문제 자체의 난이도는 역시나 Lv.1답게 매우 쉬운데 구현을 요구하는 방식에서 독특한 유형을 가진다.
핵심은 이것이다. 주어진 숫자의 총합을 반환하는것. 단, 주어진 숫자의 형식이 일반적이지 않다.
바로, 각 숫자의 절댓값과 부호를 따로 준다는 점이다. 이는 병렬적으로 바라보면 바로 해결할 수 있는데 파이썬에서는 동일한 길이를 가지는 이터러블 객체에서 위와같은 병렬적 처리를 할 때 아주 유용한 zip()이 존재한다. zip()에 대한 내용은 따로 다루지 않을 것이지만 문제를 풀 당시 공부했던 링크를 첨부하겠다. 참고바란다.

def solution(absolutes, signs):
    answer = []
    for number, sign in zip(absolutes, signs):
        if sign == True:
            answer.append(number * 1)
        else:
            answer.append(number * -1)
    return sum(answer)

파이썬 zip( ) 관련 학습 링크 ▼