프로그래머스

[프로그래머스 C++] 두 정수 사이의 합

민봉이 2022. 9. 28. 23:42
반응형

링크

https://school.programmers.co.kr/learn/courses/30/lessons/12912

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명 및 제한 조건

나의 코드

#include <string>
#include <vector>

using namespace std;

long long solution(int a, int b) {
    long long answer = 0;
    if(a == b)
        return a;
    else if(a > b){
        for(int i = b; i <= a; i++){
            answer += i;
        }
    } else if(a < b){
        for(int i = a; i <= b; i++){
            answer += i;
        }
    }
    return answer;
}

채점 결과

다수 코드

※비트 연산자를 활용한 코드

#include <string>
#include <vector>

using namespace std;

long long solution(int a, int b) {
    long long answer = 0;
    if (a > b) a ^= b ^= a ^= b;
    answer = (long long)b * -~b / 2 - (long long)a * ~-a / 2;
    return answer;
}

 

※시그마 공식을 활용한 코드

#include <string>
#include <vector>

using namespace std;

long long solution(int a, int b) {
    return (long long)(a + b) * (abs(a - b) + 1) / 2;
}
반응형