두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
다양한 방법이 있을거 같은데 당장 생각나는 방법은
반복문이니 for문을 돌리고
합을 구하는 문제이니 += 를 이용하여 합을 구할 수 있을거 같다.
개인적으로
for문을 돌리는 i자체 숫자를 a부터 b까지 돌릴수도 있다.
이생각은 for문을 아는사람이라면 누구나 알수 있는 내용이지만 나는 전혀생각하지 못했다.
function solution(a, b) {
let result1 = 0
let result2 = 0
let result3 = 0
if (a > b){
for (let i = 0 ; i < b; i++){
result1 += i };
for(let i = 0 ; i < a ; i ++){
result2 += i }
;
result3 = result2-result1}else { for (let i = 0 ; i < b; i++){
result1 += i};
for(let i = 0 ; i < a ; i ++){
result2 += i }
;
result3 = result1-result2
}
return result3
}
보기만 해도 현기증이 난다...... 이식이 틀릴수가 없는데 꼬여서 계산도 틀리게된다... 그래서 다른방법을 구글링한 결과
두번째 방법을 알수있게 되었다.
function solution(a, b) {
let result = 0;
if (a <= b) { //a가 b 이하일 때
for (let i = a; i <= b; i++) {
result += i;
// result = result + i
// 반복문이 돌면서 result 값을 증가시켜줌
// 1 번 반복 : result = 0 + 3 >> result = 3
// 2 번 반복 : result = 3 + 4 >> result = 7
// 3 번 반복 : result = 7 + 5 >> result = 12
}
} else {
for (let j = b; j <= a; j++) {
result += j;
}
}
return result;
}
이렇게 i의 범위를 a와 b로 정해준 뒤 그 사이값을 모두 더하는 방식이다.
매일 사용하는 for문인데 아 왜 이생각을 못했지 어의가 없다.....
가우스의 답안
양 끝의 합 * 양 끝의 합의 개수
function adder(a, b){
var result = 0
//함수를 완성하세요
//abs = 양수구하는 함수
return (a+b)*(Math.abs(b-a)+1)/2;
}
최댓값구하기
function adder(a, b, s = 0){
for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
return s;
}
for문의 i값을 math함수를 이용해 최솟값으로 설정하고 최댓값까지 돌도록 한뒤
그 i값을 += 계속 누적하도록 하였다.
무심코 지나치는 반복문의 조건을 잘 이용하자!!!