▶ 문제
어떤 정수들이 있다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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(signs)):
if signs[i]:
total += absolutes[i]
else:
total -= absolutes[i]
return total
통과!
다른 사람 풀이에서 zip 함수라는 걸 발견했다.
zip() 함수 찾아보기
zip() 함수는 여러개의 iterable 객체들을 동시에 순회할 수 있게 해준다
absolutes = [4, 7, 12]
signs = [True, False, True]
print(list(zip(absolutes, signs)))
# [(4, True), (7, False), (12, True)]
이렇게 두 개의 리스트를 튜플 형태로 묶어줌!!
그럼 zip을 사용해서 다시 순회를 해보면,
def solution(absolutes, signs):
total = 0
for absolute, sign in zip(absolutes, signs):
if sign:
total += absolute
else:
total -= absolute
return total
이걸 한줄로 표현해보기!
def solution(absolutes, signs):
return sum(absolute if sign else -absolute for absolute, sign in zip(absolutes, signs))
'codekata' 카테고리의 다른 글
[프로그래머스] #28 없는 숫자 더하기 (0) | 2024.07.26 |
---|---|
[프로그래머스] #27 핸드폰 번호 가리기 (문자열 연산) (0) | 2024.07.24 |
[프로그래머스] #25 나누어떨어지는 숫자배열 (sorted(iterable)=[list]) (0) | 2024.07.22 |
[프로그래머스] #24 서울에서 김서방 찾기 (0) | 2024.07.21 |
[프로그래머스] #23 콜라츠 추측 (0) | 2024.07.19 |