어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
signs[i]
가 참이면absolutes[i]
의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.입출력 예
absolutes signs result [4,7,12]
[true,false,true]
9 [1,2,3]
[false,false,true]
0
true
또는 false
값을 가진 불리언 배열. 이 배열의 각 값에 따라 첫 번째 배열의 요소가 양수인지 음수인지 결정된다.true
일 때는 정수 배열의 값을 그대로 더하고, false
일 때는 음수로 변환하여 더했다. func solution(_ absolutes: [Int], _ signs: [Bool]) -> Int {
var sum = 0
for i in 0..<absolutes.count {
if signs[i] {
sum += absolutes[i] // true인 경우 그대로 더함
} else {
sum += -absolutes[i] // false인 경우 음수로 만들어 더함
}
}
return sum
}
absolutes = [4, 7, 12]
, signs = [true, false, true]
4 + (-7) + 12 = 9
두 개의 배열을 순회하면서 같은 인덱스의 요소끼리 처리하는 방법을 배웠다. for i in 0..<intArray.count를 사용하여 배열의 각 요소를 인덱스로 접근했다.
signs의 true/false 값을 사용하여 조건에 따라 다른 연산을 수행하는 것이 문제의 핵심이었다. 이러한 방식으로 배열을 조건에 맞게 조작할 수 있음을 배웠다.
문제를 풀면서 코드의 가독성을 높이기 위해 간결하게 작성하는 방법에 대해 생각하게 되었다. 조건에 따른 연산을 간단한 if-else 구문으로 해결하여 이해하기 쉽게 만들었다.
import Foundation
func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {
var sum = 0
for i in 0..<absolutes.count {
signs[i] ? (sum += absolutes[i]) :(sum += -absolutes[i])
}
return sum
}
코드의 가독성을 위해 삼항연산자를 사용해 제출했다.
이번 문제를 통해 배열을 조건에 따라 다루는 방법과, 인덱스를 활용한 배열 간의 관계 처리에 대해 더 깊이 이해하게 되었다. 특히, 불리언 배열을 활용하여 특정 조건에 따라 숫자를 조작하는 것이 흥미로웠다. 코드의 간결성과 가독성을 높이는 연습을 통해 더 나은 코드 작성을 목표로 해야겠다고 느꼈다.