186. 음양 더하기
나의 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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) 튜플형식으로 구현된 리스트형이 리턴
1
2
3
4
5
6
7
8
9
10
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
*/
다른코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.