-
[Swift] 알고리즘 공부 - 음양 더하기알고리즘 공부/프로그래머스 2023. 3. 28. 14:50
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한 사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예
absolutes signs result
[4,7,12] [true,false,true] 9 [1,2,3] [false,false,true] 0 설명
1. absolutes와 signs이 연관되어 있으므로 zip으로 묶어서 사용
2. signs이 true면 + false면 -를 map을 반환
3. 모든 원소의 합을 구해야 하므로 reduce사용
import Foundation func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int { return zip(absolutes, signs).map{ $1 ? $0 : -$0 }.reduce(0,+) }
zip함수를 몰랐었는데 이번기회에 알게되었다.
궁금해서 찾아봤는데 zip을 사용할때 꼭 2 개의 배열 원소 개수가 같을 필요는 없고 적은 수의 배열을 기준으로 계산됨
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[Swift] 알고리즘 공부 - 가운데 글자 가져오기 (0) 2023.03.30 [Swift] 알고리즘 공부 - 제일 작은 수 제거하기 (0) 2023.03.28 [Swift] 알고리즘 공부 - 핸드폰 번호 가리기 (0) 2023.03.28 [Swift] 알고리즘 공부 - 콜라츠 추측 (0) 2023.03.28 [Swift] 알고리즘 공부 - 하샤드 수 (0) 2023.03.27 - absolutes의 길이는 1 이상 1,000 이하입니다.