[ C++ ] 프로그래머스: 두 정수 사이의 합
✏️ PS/Programmers

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

반응형

 

안녕하세요? 수구리입니다.

이번 포스팅은 프로그래머스 Level 1 문제를 풀어보려고 합니다!

이제는 문제의 제목만 보아도 어떤 문제인지 대충 감이 오시죠?!

바로 문제를 보도록 하겠습니다..!

 

 

 

[ 문제 ] 프로그래머스: 두 정수 사이의 합

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

 

코딩테스트 연습 - 두 정수 사이의 합

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우

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 = a; i <= b; i++)
            answer += i;
    } else {
        for (int i = b; i <= a; i++)
            answer += i;
    }
        
    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;
}

위의 풀이는 시그마 공식을 이용한 해답이군요..! 정말 신기합니당..

 

[ 설명 ]

1. 문제에서 만약 인자로 넘어온 값이 같으면 둘 중 하나를 리턴하면 되므로 저는 a를 리턴하였습니다.

2. 만약 a가 b보다 작다면, a부터 반복문을 시작하며, b까지의 모든 합을 answer 변수에 저장합니다.

3. 2의 경우가 아니라면, b부터 a까지 반복문을 순회하면서 모든 합을 answer 변수에 저장합니다.

4. 마지막으로 answer 값을 반환합니다.

 

이상으로 두 정수 사이의 합이었습니다.

감사합니다!

 

 

반응형