프로그래머스의 음양 더하기(월간코드챌린지) 문제이다.

 

[ 문제풀이 ]

숫자들로 이루어져 있는 리스트와, 해당 숫자들이 절대값으로 표시되어 있는지 아닌지에 대한 리스트가 주어졌을 때, 주어진 리스트의 숫자들의 총합을 구해야 하는 문제이다.

 

만약, 현재 탐색하고 있는 숫자의 부호가 양수라면 해당 숫자를 그대로 더해주면 되지만, 숫자의 부호가 음수인 숫자라면 크기를 반전되어야 한다. 예를 들어서 '1'이라는 숫자를 현재 탐색하고 있는데 부호가 false 인 경우, 실제 이 숫자는 '-1' 이라는 것을 의미한다. 따라서 "현재 탐색하고 있는 숫자 * -1"을 함으로써 부호를 반전시켜 준 후에 더해주면 된다.

 

[ 소스코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
#include <vector>
 
using namespace std;
 
int solution(vector<int> absolutes, vector<bool> signs) 
{
    int answer = 0;
    for (int i = 0; i < absolutes.size(); i++)
    {
        if (signs[i] == false) absolutes[i] *= -1;
        answer += absolutes[i];
    }
    return answer;
}
cs

 

+ Recent posts