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
반응형
'프로그래머스 C++ > Level.1' 카테고리의 다른 글
프로그래머스 Level.1 콜라츠 추측 (0) | 2023.10.21 |
---|---|
프로그래머스 Level.1 서울에서 김서방 찾기 (1) | 2023.09.24 |
프로그래머스 Level.1 하샤드 수 (0) | 2023.08.21 |
프로그래머스 Level1. 정수 내림차순으로 배치하기 (0) | 2023.08.20 |
프로그래머스 Level.1 문자열을 정수로 바꾸기 (0) | 2023.07.10 |