[TIL][프로그래머스/Swift] 음양더하기

Eden·6일 전
1

TIL

목록 보기
35/41
post-thumbnail

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

제한사항

  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

입출력 예

absolutessignsresult
[4,7,12][true,false,true]9
[1,2,3][false,false,true]0

문제 해결 과정

1. 입력 배열

  • 첫 번째 배열: 정수들의 배열
  • 두 번째 배열: true 또는 false 값을 가진 불리언 배열. 이 배열의 각 값에 따라 첫 번째 배열의 요소가 양수인지 음수인지 결정된다.

2. 해결 방법

  • 반복문을 사용하여 두 배열을 순회하며 같은 인덱스의 요소를 처리했다.
  • signs의 값이 true일 때는 정수 배열의 값을 그대로 더하고, false일 때는 음수로 변환하여 더했다.

3. 코드

 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
 }

4. 예시

  • 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 
}

코드의 가독성을 위해 삼항연산자를 사용해 제출했다.

느낀 점

이번 문제를 통해 배열을 조건에 따라 다루는 방법과, 인덱스를 활용한 배열 간의 관계 처리에 대해 더 깊이 이해하게 되었다. 특히, 불리언 배열을 활용하여 특정 조건에 따라 숫자를 조작하는 것이 흥미로웠다. 코드의 간결성과 가독성을 높이는 연습을 통해 더 나은 코드 작성을 목표로 해야겠다고 느꼈다.

profile
Just living the daydream, one moment at a time.
post-custom-banner

0개의 댓글