🔴 문제
🔵 풀이 1 - enumerated()
result라는 변수를 생성하고, for...in loop를 돌리며
signs[idx]가 true일 땐 result에 더하고, false일 땐 뺀다.
* enumerated() 문법 : [Swift|문법] index 찾기 메소드 - enumerated()...
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
var result: Int = 0
for (idx, value) in absolutes.enumerated() {
if signs[idx] {
result += value
} else {
result -= value
}
}
return result
}
🔵 풀이 2 - map, reduce
새로운 배열을 반환하는 map과, 컨테이너 내부의 값을 하나로 통합하는 reduce를 사용할 수 있다.
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
return (0..<absolutes.count).map { signs[$0] ? absolutes[$0] : -absolutes[$0] }.reduce(0, +)
}
🔵 풀이 3 - zip, map, reduce
2개의 시퀀스를 시퀀스 쌍으로 만들어주는 zip을 사용하면 풀이 2의 가독성이 보다 좋아진다.
- zip : apple 공식 문서 (링크)
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
zip(absolutes, signs)
.map { $1 ? $0 : -$0 }
.reduce(0, +)
}
'Swift > Code Kata (알고리즘)' 카테고리의 다른 글
[Swift|코드카타] (프로그래머스) 입문 #28. 없는 숫자 더하기 - 논리 부정 연산자(!), contains, filter, reduce (0) | 2024.02.22 |
---|---|
[Swift|코드카타] (프로그래머스) 입문 #27. 핸드폰 번호 가리기 - enumerated(), suffix(_:), map (0) | 2024.02.21 |
[Swift|코드카타] (프로그래머스) 입문 #25. 나누어 떨어지는 숫자 배열 (0) | 2024.02.19 |
[Swift|코드카타] (프로그래머스) 입문 #24. 서울에서 김서방 찾기 - firstIndex(of:), enumerated() (2) | 2024.02.18 |
[Swift|코드카타] (프로그래머스) 입문 #23. 콜라츠 추측 - 함수 2개 쓰기 (1) | 2024.02.18 |