본문 바로가기
Computer Science/Coding Test

c++(cpp) 프로그래머스 - 코딩 테스트 : 두 정수 사이의 합

by hzyiunn 2022. 8. 13.
728x90
반응형
#include <string>
#include <vector>

using namespace std;

long long solution(int A, int B) {
    long long answer = 0;
    int a = A < B ? A : B;
    int b = A < B ? B : A;
    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)    answer = a;
    else if(a > b)
    {
        for(int i = b ; i <= a; i++)
        {
            answer += i;
        }
    }
    else
    {
        for(int j = a ; j <= b; j++)
        {
            answer += j;
        }
    }
    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;
}
728x90
반응형

댓글