음양 더하기

문제 링크

음양 더하기

분석

absolutes배열의 정수들을 signs의 같은 인덱스에 있는 값으로 부호를 결정해 정수들의 총 합을 구하는 문제입니다.

if문이나 삼항연산자를 사용할 수 있습니다.

풀이

if문을 사용한 방법입니다.

#include <vector>

using namespace std;

int solution(vector<int> absolutes, vector<bool> signs) {
    int answer = 0;

    for (int i = 0; i < signs.size() ; ++i)
    {
        if(false == signs[i])
        {
            absolutes[i] *= -1;
        }
        
        answer += absolutes[i];
    }

    return answer;
}

if(false == signs[i])에서는 signs배열에서 같은 인덱스의 값이 flase라면 음수를 만들어준 후 더해줍니다.
만약 true라면 그대로 값을 더해주면 됩니다.


삼항연산자를 사용한 방법입니다.

#include <vector>

using namespace std;

int solution(vector<int> absolutes, vector<bool> signs) {
    int answer = 0;

    for (int i = 0; i < signs.size() ; ++i)
    {   
        answer += (true == signs[i]) ? absolutes[i] : -absolutes[i];
    }

    return answer;
}

성능 요약

if문을 사용한 성능입니다.

테스트 1 〉 통과 (0.02ms, 4.28MB)
테스트 2 〉 통과 (0.02ms, 4.21MB)
테스트 3 〉 통과 (0.01ms, 4.09MB)
테스트 4 〉 통과 (0.01ms, 4.2MB)
테스트 5 〉 통과 (0.01ms, 4.19MB)
테스트 6 〉 통과 (0.01ms, 4.21MB)
테스트 7 〉 통과 (0.01ms, 4.13MB)
테스트 8 〉 통과 (0.01ms, 4.21MB)
테스트 9 〉 통과 (0.01ms, 4.18MB)


삼항연산자를 사용한 성능입니다.

테스트 1 〉 통과 (0.01ms, 4.02MB)
테스트 2 〉 통과 (0.02ms, 3.67MB)
테스트 3 〉 통과 (0.02ms, 4.21MB)
테스트 4 〉 통과 (0.01ms, 4.07MB)
테스트 5 〉 통과 (0.02ms, 4.2MB)
테스트 6 〉 통과 (0.01ms, 3.7MB)
테스트 7 〉 통과 (0.01ms, 4.22MB)
테스트 8 〉 통과 (0.01ms, 3.75MB)
테스트 9 〉 통과 (0.01ms, 4.14MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기