두 정수 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의 대소관계는 정해져있지 않습니다.
a | b | return |
---|---|---|
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
if(a > b) {}else {}
answer = 0;
if(a > b) {
for ( let i = b; i <= a ; i++){
return answer += i;
}
}else {
for ( let i = b; i <= a ; i++){
return answer += i;
}
}
function solution (a,b){
let answer = 0
return (a+b)*(Math.abs(b-a)+1)/2
}
오호~ 한 줄로 끝내버렸다.
수학으로 저렇게 풀수 있구나 대단함...
let a = 3
let b = 9
console.log(a+b); //12
console.log(Math.abs(b-a)+1); //7
console.log((a+b)*(Math.abs(b-a)+1)/2) //42
console.log(3+4+5+6+7+8+9); //42
가우스 공식으로 풀었다.
찾다보니 다른 풀이 법도 있었다.
function solution(a, b, answer = 0) {
for (var i = Math.min(a, b); i <= Math.max(a, b); i++) answer += i;
return answer;
}
Math를 이용한 풀이 법이 많았다.
처음에는 sort로 a,b 대소를 구분하려다가, if문으로 했었는데 차근차근 하다보면서 발전하겠지란 생각을 했다.
또, 다양한 풀이 법들이 많았다. 하나하나 다 이해하려다간 늙을 것 같아서
저런게 있구나 하고 넘겼다. 정말 세상엔 똑똑이들이 많구나 그거하난 확실하다.
알고리즘을 간결하게 풀기 위해서는 수학적인 머리가 있으면 매우 유리하다고 생각 했다.
내가 작성할 수 도 있지만, 다른 사람이 작성할 코드를 이해 못해서 구글링 하는 시간이 또 생기니까~