LV1_두 정수 사이의 합(C++)

sonyrainy·2022년 7월 21일
1

프로그래머스_LV1

목록 보기
3/39
post-thumbnail

🚗문제 설명

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

🚓제한 조건

a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져있지 않습니다.

🚕입출력 예시

🚐코드_1

프로그래머스에서 문제를 풀기 위한 틀을 주면, '주어진 헤더'만을 이용해서 문제를 풀어야 하는 줄 알았다.

#include <string>
#include <vector>
using namespace std;

long long solution(int a, int b) {
    long long answer = 0;
    vector<int> sav;
    int k, i;
    if(b>a) {
        k = b - a;
        for(i=0;i<=k;i++){
            //sav[i] = a++;
            sav.push_back(a++);
            answer += sav[i];
        }
    } else if(a>b) {
        k = a - b;
        for(i=0;i<=k;i++){
            //sav[i] = b++;
            sav.push_back(b++);
            answer += sav[i];
        }
    }
    else answer=a;
    return answer;
}

풀다보니까 코드가 너무 비효율적인 것 같았고, 주어진 헤더를 사용하지 않고 코드를 다시 작성했다.

🚐코드_2

#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){
        while(a<=b) answer+=a++;
    }
    else{
        while(a>=b)  answer+=b++;
    }
    return answer;
}

근데 안써도 되더라.. 처음에는 주어진 헤더를 이용하지 않으면 오답이 되는 줄 알았다ㅋㅋㅋㅋㅋ


혼자 삽질했다..

그래도 vector에서 push_back(), index[i]를 사용하는 경우 주의할 점을 다시 한 번 상기할 수 있었다.

profile
@sonyrainy

0개의 댓글