프로그래머스: 두 정수 사이의 합




프로그래머스 ‘두 정수 사이의 합’ 문제.

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수



나의 해결방안

case1

function solution(a, b) {
    var answer = 0;
    
    if(a-b > 0){
        for(let i=b; i<=a; i++){
            answer += i
        }
    }else{
        for(let i=a; i<=b; i++){
            answer += i
        }
    }
    return answer;
}
  1. a와 b의 크기를 비교해서 어떤수를 초기값으로 지정해줄지 생각
  2. a가 b보다 더 큰숫자이면 a-b가 0보다 크므로 초기값은 b가 되어야 함
  3. 아닌 경우는 a를 초기값으로 지정





case 2

function solution(a, b) {
    var answer = 0;
  
    if( a === b){
        return a;
    }else{
        //최솟값
        //반복문이 실행될 때, 설정되는 초깃값(a와b중에서 더 작은 수가 들어온다
        // const start = a > b ? b : a
        const start = Math.min(a,b)
        
        
        //최댓값
        //반복문이 종료되는 조건을 설정(a와 b중에서 더 큰 수가 들어온다
        // const end = a > b ? a : b
        const end = Math.max(a, b);
        
        for(let i = start; i<= end; i++){
            answer += i;
        }
    }
    return answer;
}



CASE 3 (메서드 사용)

function solution(a, b) {
    if(a === b) return a;
    const start = Math.min(a,b);
    const end = Math.max(a,b);
    const answer = new Array(end -start).fill(1).reduce((a,b,i)=>{
        const num = (start+b)+i
        return a + num
    }, start);
    return answer;
}








© 2018. by sora

Powered by sora