두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
array | height | result |
---|---|---|
[149, 180, 192, 170] | 167 | 3 |
[180, 120, 140] | 190 | 0 |
function solution(a, b) {
let answer = 0;
for (let i=Math.min(a,b); i<=Math.max(a,b); i++) {
answer += i;
}
return answer;
}
a와 b의 대소관계가 정해져있지 않았기 때문에 조건문으로 처리를 할까 하다가, Math.max()
와 Math.min()
을 사용하여 대소 관계처리를 하였다. 처음엔 배열을 따로 만들고 reduce()
를 사용해서 누적값을 리턴하려다가 바로 answer 변수에 값을 더하면 될 것 같아서 코드를 작성했다. for문을 사용하지 않은 방법이 궁금하다.
function adder(a, b, s = 0){
for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
return s;
}
나와 같은 방식인데 파라미터에 변수를 선언하는 방법은 생각하지 못했다! 파라미터에 변수를 선언하고, 따로 들어오는 변수가 없다면 선언된 값으로 사용된다는 점을 기억하자. 그리고 for문을 통해 반복할 때 s에 값을 바로 더하는 방법도 되게 신기하다. let s = 0;
이라는 코드를 이렇게 없앨 수 있구나.