문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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):
answer = 0
for i in range(len(absolutes)):
if signs[i]:
answer += absolutes[i]
else:
answer += -absolutes[i]
return answer
풀이
abolutes 리스트의 길이만큼 for문을 돌려 signs[i]가 참이면 양수인 absolutes[i]의 값을, 거짓이면 음수인 absolutes[i]의 값을 answer에 더해준다.
다른 코드와 풀이
아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.
def solution(absolutes, signs):
return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
zip() 메서드를 통해 absolutes와 signs 에서 인덱스 수가 같은 것들끼리 묶어주고 반복문을 통해 sign의 값이 참이면 양수를, 그렇지 않다면 음수를 더해준 값을 리턴한다.
정리
zip()
: 동일 개수로 이루어진 자료형을 묶어주는 함수
'Coding Test' 카테고리의 다른 글
231015 제일 작은 수 제거하기 - Level 1 (0) | 2023.10.15 |
---|---|
231014 나누어 떨어지는 숫자 배열 - Level 1 (0) | 2023.10.14 |
231013 서울에서 김서방 찾기 - Level 1 (0) | 2023.10.13 |
231012 콜라츠 추측 - Level 1 (0) | 2023.10.12 |
231011 하샤드 수 - Level 1 (1) | 2023.10.11 |