프로그래머스 코딩테스트 연습 <두 정수 사이의 합>

6272 단어 CodingTestCodingTest

🔎 <두 정수 사이의 합>

📝 답안

코딩테스트 연습을 이제 막 시작해 부끄러운 수준의 내 답안과 다른 사람들의 답안을 확인해보자.

🚩 제출한 답안

function solution(a, b) {
  var answer = 0;
  
  if (a <= b) {
    answer += (a + b) * (b - a + 1) * 0.5;
  } else {
    answer += (a + b) * (a - b + 1) * 0.5;
  }
  
  return answer;
}

먼저 두 수를 비교하여, 두 수 사이의 모든 정수의 합을 구하게끔 하는데, 이때 두 수 모두 음수가 될 수 있다는 점에 유의해야 한다.

참고로, a, b 사이의 모든 정수의 합은 (a + b) * (b - a) / 2로 계산된다.

🚩 다른 사람 답안

Math.abs()를 활용한 답안

function solution(a, b) {
  var answer = 0;

  return (a + b) * (Math.abs(a - b) + 1) * 0.5;
}

Math.abs()를 활용해 a, b의 부호에 관계 없이 공식을 적용할 수 있다.

📌 공부할 점

등차수열의 합

등차수열의 n항 a와 m항 b 사이 모든 수의 합은 다음과 같다.

S=(ab+1)(a+b)/2S=( ∣ a − b ∣ + 1 ) ∗ ( a + b ) / 2

즉, 두 항 사이의 개수와 두 항의 평균을 곱하면 등차수열의 두 항 사이의 모든 수의 합을 구할 수 있다.

좋은 웹페이지 즐겨찾기