본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 음양 더하기(C#)

by jyppro 2023. 7. 29.

음양 더하기

오늘은 월간 코드 챌린지 시즌2 출제문제 중 하나인 "음양 더하기" 를 다뤄보도록 하겠습니다.

 

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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

 

입출력 예 설명

입출력 예 #1
signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
따라서 세 수의 합인 9를 return 해야 합니다.


입출력 예 #2
signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
따라서 세 수의 합인 0을 return 해야 합니다.

 

시작 코드

using System;

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

 

나의 풀이

using System;

public class Solution
    {
        public int solution(int[] absolutes, bool[] signs)
        {
            int answer = 0;
            for (int i = 0; i < absolutes.Length; i++)
            { answer += absolutes[i] = signs[i] ? absolutes[i] : absolutes[i]*-1; }
            return answer;
        }
    }

코드를 먼저 살펴보겠습니다. 처음에 int형 배열 absolutes와 bool타입 배열 signs가 주어집니다. for문을 통해 absolutes의 길이만큼 삼항연산자를 실행합니다. 삼항연산자의 내용을 살펴보면 absolutes 인덱스에 위치한 수가 sign 인덱스에 위치한 불리언값과 일치하다면 absolutes 인덱스 위치의 값을 그대로 반환하고, 아니라면 absolutes값에 -1을 곱하여 반환해줍니다.

 

문제에서 요구하는 것은 absolutes에 주어진 수에 signs의 true와 false를 통해 부호를 결정하고, 부호가 정해진 모든 수들 더한 값을 구하는 것입니다. 결국 부호를 정해서 더해주기 위한 작업을 한다는 것입니다. absolutes에는 기본적으로 양수의 형태로 들어있기 때문에 true와 일치하면 양수로, false와 일치하면 음수로 만들어 최종적으로 answer에 전부 더하여 반환해주면 답을 구할 수 있습니다.

 

<NEXT>

오늘은 "음양 더하기" 문제를 풀어보았습니다. 다음에는 "핸드폰 번호 가리기" 문제를 풀어보도록 하겠습니다. 감사합니다.