본문 바로가기
🍎 Swift/Programmers

[👾 Programmers] 26. 음양 더하기

by 솔비님 2024. 7. 10.

 

1. 문제 설명 (📎Link)

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 

실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

 

2. 제한사항

absolutes의 길이는 1 이상 1,000 이하입니다. 

absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. 

signs의 길이는 absolutes의 길이와 같습니다. 

signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

 


📝 문제

import Foundation

func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
    return 123456789
}

 

 

💻 내가 푼 방법

 

1) 오류 발생

 → signs[i]의 인덱스가 정수이므로 for 조건에 들어가는 signs 부분도 동일하게 정수로 나올 수 있게 통일해야 함

 

2) 0...<signs.count 로 변경성공

func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
    var result: [Int] = []

    for i in 0..<signs.count {
        if signs[i] == true {
            result.append(absolutes[i])
        } else {
            result.append(-absolutes[i])
        }
    }

    return result.reduce(0, +)
}

 

3) Tuple 을 이용한 또 다른 풀이법!!

func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
    var result: [Int] = []
    
    //index와 value를 동시에 가져올 수 있음
    //(순서, 값) - 변수명은 내맴대로
    for (index, value) in signs.enumerated() {
        //0번째 value가 true 라면
        if value == true {
            result.append(absolutes[index])
        } else {
            result.append(-absolutes[index])
        }
    }
    
    return result.reduce(0, +)
}

 


🔎 의문점과 공부한 것

1.  알고리즘에 튜플을 적극적으로 사용해보자 (이유: 멋있음)