개발 기록 남기기✍️

[프로그래머스] 두 정수 사이의 합 본문

코딩 테스트 연습

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

너해동물원 2023. 3. 29. 11:53

🗒️ 문제 설명

두 정수 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

 


❇️ 나의 풀이

  • 먼저 early return을 통해 a와 b 값이 같을 때는 바로 a를 리턴한다.
  • a,b의 대소 관계 판별은 잠시 제쳐두고, a < b라는 전제 하에 sum 함수를 작성한다.
  • i는 a에서 시작해서 b가 될때까지 answer에 i 값을 더해준다.
  • a와 b의 대소 관계를 확인하고, 순서에 맞게 sum 함수에 인자를 전달한다.
function solution(a, b) {
    if (a === b) return a;
    return a > b ? sum(b,a) : sum(a,b)
    
    function sum(a,b) {
        let answer = 0;
        for(let i = a; i <= b; i++){
            answer += i
        }
        return answer
    }
}

 

 

💟 본받고 싶은 코드

function adder(a, b){
    var result = 0
    //함수를 완성하세요
    return (a+b) * (Math.abs(a-b)+1) / 2;
}

 

역시 사람은 지식이 있어야.... ^,^ 손이 덜 고생한다... 이 공식을 활용하면 a===b 인 경우를 고려하지 않아도 되고, for문을 돌지 않고도 훨씬 더 빠르게 연산을 수행할 수 있다.

다들 똑같은 맘~~~