포스트

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 라이센스를 따릅니다.