Notice
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Recent Posts
Recent Comments
관리 메뉴

코딩하루루

<코딩테스트 연습JS >Lv.1 연습문제>두 정수 사이의 합 본문

Algorithm

<코딩테스트 연습JS >Lv.1 연습문제>두 정수 사이의 합

코딩하루루 2024. 4. 30. 10:09

문제>>

 

풀이과정 >>

// 1) a 와 b 사이의 속한 정수의 합 리턴
// 2) a 와 b 가 같다면 둘중 하나 리턴
// 3-1) a 와 b가 같다면 , a 리턴
// 3-2) a 가 b 보다 크면 , 사이 합
// 3-3) b 가 a 보다 크면, 사이 합

function solution(a, b) {
    let result = 0;

    if (a === b) {
        result = a;

    } else if (a < b) {
        for (let i = a; i <= b; i++) {
            result += i;
        }

    } else {
        for (let i = b; i <= a; i++) {
            result += i;
        }
    }
    return result;
}

 몇몇 문제가 실행시간과 메모리가.. 컸다. 

다른사람 풀이로 공부해 보자

 

다른 사람의 풀이>>

function solution(a, b){
     
    return (a+b) * (Math.abs(a-b)+1) / 2;
}

//등차수열의 합 공식을 사용하심
//(첫번째 항과 끝 항의 합) * (항의 갯수 /2)
//예를들어 a=6 b=12 라면  항의 갯수는 6, 7 ,8 ,9, 10, 11, 12 : 7개 
// (Math.abs(a-b)+1) 둘값을 뺀후 더하기 1을 하면 사이항의 갯수가 나옴 
//  6, 7 ,8 ,9, 10, 11, 12 <- 첫번째와 끝을 더하면 18이 나옴 
//6+12 / 7+11/ 8+10 /9   <- (a+b 합 18) * (항개수 /2) <- 18 * 3.5 = 총합