본문 바로가기
프로그래머스 C++/Level.1

프로그래머스 Level1. 두 정수 사이의 합

by yeni_0224 2023. 8. 30.
728x90
반응형

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

#include <string>
#include <vector>

using namespace std;

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

a와 b의 값이 같은 경우는 a 나 b 둘중 아무나 출력해도 상관없기 때문에 a를 출력한다고 했다.

 

a와 b 값이 다른 경우가 관건이었는데

a와 b 사이의 값을 어떻게 표현할까 고민했다. a와 b 사이의 수들을 순서대로 나열하면 결국 각 1씩 차이가 난다.

그렇기 때문에  반복문을 사용해 a와 b의 차이값 + 1번 만큼 반복하여 더해주기로 한다.

a = 3, b = 5 라면 3부터 5의 차이값은 2이고, 총 3개의 숫자를 더해줘야하기 때문이다.

 

a와 b 두 숫자 중 어떤 숫자가 더 큰지 제한을 두지 않았다고 했기 때문에 절대값 abs 함수를 사용해 차이값을 0 이상의 정수로 만들어주었다.

 

그 다음 반복문을 돌며 a 와 b 사이의 정수값들이 발생하면, 그 값들을 차례로 전부 더해줄 수 있도록 했다. 

a값이 더 큰 경우 b 값에 더해주도록 하고, b 값이 더 큰 값이면 a에 더해주어

a 와 b 사이의 값 모두를 찾아내어 더하는 방향으로 구현했다.

 

요약.

두 숫자 사이의 정수값들을 모두 찾아 그 사이 값의 + 1만큼 반복적으로 더해주었다.

728x90
반응형