두 정수 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의 대소관계는 정해져있지 않습니다.
프로그래머스에서 문제를 풀기 위한 틀을 주면, '주어진 헤더'만을 이용해서 문제를 풀어야 하는 줄 알았다.
#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;
}
풀다보니까 코드가 너무 비효율적인 것 같았고, 주어진 헤더를 사용하지 않고 코드를 다시 작성했다.
#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]를 사용하는 경우 주의할 점을 다시 한 번 상기할 수 있었다.