코테09) 음양더하기

gyu·2024년 4월 4일

Algorithm

목록 보기
10/45

📝 문제설명

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

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

처음시도:

def solution(absolutes, signs):
    total = 0
    for i in range(len(absolutes)):
            total += -abs(absolutes[i]) if not signs[i] else absolutes[i]
    return total

이 문제에서 먼저 생각했던 것은false 면 음수 true면 양수로 만들기였다 그 후 다 더하면 답이 나올 거라 생각했다. for loop를 사용해서 absolutes[i]와 sign[i]는 대응되니까 i 하나만 놓았다. 음수를 만들기 위해 -abs()를 사용했다

🔗 관련개념

-abs(): 양수를 음수로 변환해줌
+) abs() 수의 절댓값을 리턴해줌

✔ Tips to improve

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

푸는 방법은 똑같은데 이 풀이에서는 zip()을 사용했다
zip(iterator1,iterator2,...):
두개 이상의 배열을 같이 tuple 형태로 zip obj반환
iterator들의 길이가 다를 경우, 더 적은 iterator에 맞춰서 만들어짐(ex) 각 iterator들의 element가 4,3이면 zip()시 3개 반환)

a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica", "Vicky")

x = zip(a, b) 
print(x) #<zip object at 0x153c5bd9e440>

print(tuple(x)) #(('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica'))

다른사람들의 다양한 풀이들을 볼 수 있는데 한 문제에 다양한 풀이가 있을 수 있다는 게 참 신기하다

profile
#TechExplorer 🚀 Curious coder exploring the tech world, documenting my programming journey in a learning journal

0개의 댓글