문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
signs[i]
가 참이면 absolutes[i]
의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.입출력 예
absolutes | signs | result |
---|---|---|
[4,7,12] | [true,false,true] | 9 |
[1,2,3] | [false,false,true] | 0 |
입출력 예 설명
입출력 예 #1
[true,false,true]
이므로, 실제 수들의 값은 각각 4, -7, 12입니다.입출력 예 #2
[false,false,true]
이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.풀이 과정
- 배열 absolutes와 signs에서 같은 Index에 위치한 요소들을 합쳐준다! ‘zip’ 함수를 사용하면 된다.
- map을 사용해 합친 값을 하나의 배열로 만들어준다.
- reduce를 사용해 합친 배열에 있는 값들을 모두 더해준다!
- 이 때, 삼항 조건 연산자를 사용해 signs가($1)이 true일 경우 absolutes 요소($0) 그대로(양수로) 반환하고, false일 경우 - 를 붙여 음수로 반환한다.
같은 인덱스에 위치한 요소들을 매칭시키는 개념을 몰라서 서칭 후 풀이를 진행했다!
서칭 후 알게 된 개념 간단히 정리 :>
zip
전역 함수. 두 개의 시퀀스(배열이나 다른 컬렉션)를 인자로 받아 두 시퀀스의 같은 인덱스 요소들을 쌍으로 묶어주는 역할을 한다. 배열, 딕셔너리, 세트 등 다양한 시퀀스 타입에서 사용 가능하다!
Solution
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
return zip(absolutes, signs).map { $1 ? $0 : -$0 }.reduce(0, +)
}
우와 풀이 정말 간단하게 잘 담아내셨네요 !! 저는 map이랑 친해지고 싶어도 친해지지 못했는데 대단하십니다👏🏻