본문 바로가기
C#/프로그래머스

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

by ian's coding 2025. 4. 21.
728x90
반응형

💻 프로그래머스 - 음양 더하기


📌 문제 설명

정수들의 절댓값을 담은 배열 absolutes와
해당 정수들의 부호를 나타내는 bool 배열 signs가 주어집니다.

각 정수의 실제 값은

  • signs[i]가 true면 양수,
  • false면 음수로 판단합니다.

이렇게 부호를 적용한 모든 정수들의 총합을 구해서 반환하는 문제예요.


✅ 제한 사항

  • absolutes의 길이 = signs의 길이 (1 이상 1,000 이하)
  • absolutes[i]는 1 이상 1,000 이하인 정수입니다.

💡 어떻게 접근하면 좋을까요?

두 배열은 같은 길이를 가지고 있으므로,
for문으로 한 번씩 순회하면서 각 요소의 부호를 적용해 더해주면 됩니다.


🧾 C# 코드 풀이

using System;

public class Solution {
    public int solution(int[] absolutes, bool[] signs) {
        int answer = 0;

        for (int i = 0; i < absolutes.Length; i++) {
            // signs[i]가 true면 양수, false면 음수
            answer += absolutes[i] * (signs[i] ? 1 : -1);
        }

        return answer;
    }
}

🔍 코드 설명

코드설명
absolutes[i] * (signs[i] ? 1 : -1) 부호에 따라 정수를 양수/음수로 변환합니다.
answer += ... 변환된 값을 누적해서 더해줍니다.
for 반복문 배열의 길이만큼 순회하면서 계산을 진행합니다.

✨ 포인트 정리

  • 배열 인덱스를 기준으로 두 배열을 동시에 처리합니다.
  • signs[i]가 true면 +, false면 - 부호를 붙여 더합니다.
  • 조건문 없이 삼항 연산자를 활용해서 간결하게 처리할 수 있어요 👍

🧾 LINQ 버전 코드 (C#)

using System;
using System.Linq;

public class Solution {
    public int solution(int[] absolutes, bool[] signs) {
        return absolutes
            .Select((value, index) => signs[index] ? value : -value)
            .Sum();
    }
}

🔍 코드 설명

코드설명
.Select((value, index) => ...) absolutes 배열을 순회하면서, 해당 인덱스의 signs 값도 함께 활용합니다.
signs[index] ? value : -value signs[index]가 true면 양수, false면 음수로 변환합니다.
.Sum() 변환된 값들을 모두 더해서 최종 결과를 구합니다.

✨ 장점

  • 코드가 매우 간결하고 가독성이 좋습니다.
  • 반복문 없이 함수형 스타일로 문제를 해결할 수 있어요.
  • Select와 Sum을 함께 사용하는 패턴은 LINQ 문제 풀이에서 자주 등장합니다.

 

728x90
반응형

댓글