
나의 코드
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
var answer : Int = 0
for (index, value) in signs.enumerated() {
if value == true {
answer += absolutes[index]
} else {
answer -= absolutes[index]
}
}
return answer
}
이렇게 생각한 이유.
처음에는 단순한 signs 배열에서 index에 접근해서 하려고 했으나 되지 않았다. (for 문에 count대신, 배열 그자체로 접근해서 안되었다.)
알고보니 dictionary type으로 쓸 수있는 enumerated를 사용하는 방법이 있어서 해당 방법으로 문제를 풀었다.
역시 처음에 보고 생각했던 map 같은 고차함수를 사용한 풀이를 보았다.
나도 생각은 했지만 오래걸릴것 같아 구현하지 못했는데, 추후에 다시 복습할때는 써봐야겠다.
-
enumerated
- array값에 enumerated()함수를 사용하면, (index, value) 튜플형식으로 구현된 리스트형이 리턴
let arr = ["one", "two", "three"]
print(arr.enumerated()) // EnumeratedSequence<Array<String>>(_base: ["one", "two", "three"])
for (index, number) in arr.enumerated() {
print("\(index), \(number)")
}
/*
0, one
1, two
2, three
*/
다른코드
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
return (0..<absolutes.count).map { signs[$0] ? absolutes[$0] : -absolutes[$0] }.reduce(0, +)
}
//
mport Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
zip(absolutes, signs)
.map { $1 ? $0 : -$0 }
.reduce(0, +)
}
//
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
var answer = 0
for i in 0..<signs.count {
answer += signs[i] == true ? absolutes[i] : -absolutes[i]
}
return answer
}
//
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
let n :Int = absolutes.count
var sum: Int = 0
for i in 0..<n {
if signs[i] == true {
sum += absolutes[i]
} else {
sum -= absolutes[i]
}
}
return sum
}
PREVIOUS185. 나누어 떨어지는 숫자
NEXT187. 핸드폰 번호 가리기