코딩테스트
[JS] 연습문제 > 두 정수 사이의 합
차차한
2022. 8. 29. 12:23
function solution(a, b) {
var answer = 0;
if(a > b){
for(var i = b; i <= a; i++){
answer += i;
}
}else if(a < b){
for(var i = a; i <= b; i++){
answer += i;
}
}else{
return a;
}
return answer;
}
a가 b보다 큰 경우, b가 a보다 큰 경우, a와 b가 같은 경우로 나뉘어지기 때문에 if문을 사용했다.
for 반복을 돌려 i가 작은 수이고 i가 큰 수까지 반복되게 해서 변수에 i를 저장해줬다.
같은 경우 a또는 b를 리턴해준다.
이렇게 풀었을 때 풀이 시간이 꽤 오래걸리는 문제도 있다.
아무래도 if문도 여럿이고 안에 for문도 있어서 그런 듯하다.
function adder(a, b){
return (a+b)*(Math.abs(b-a)+1)/2;
}
다른 사람 풀이
가우스공식을 이용해 풀었다.
가우스 공식은 [양 끝의 숫자 * 숫자의 개수 / 2]
양끝의 숫자를 더한 값(a+b) * 숫자의 개수(Math.abs(b-a)+1 / 2
b가 a보다 작은 수더라도 Math.abs를 이용해 절대값으로 만들 수 있다.